![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как открыть веб-папку программно? [WinXP]
clickmaker © (2007-07-13 15:06:00)Ту что с SharePoint, Web DAV. В ИЕ она открывается путем установки флажка в диалоге Open, либо через скрипт со спаном специального вида.. а вот программно как?
в WebBrowser.Navigate параметров не нашел...
$OOFFOO (2007-08-10 09:35:00) [1]ого! а мастера тоже задают вопросы?!
clickmaker (2007-08-01 10:56:00) [2]
> [8] Lacmus © (31.07.07 16:39)
да, это более изящный метод, чем создание ярлыка вручную )
спасибо еще раз
Lacmus (2007-07-31 16:39:00) [3]>clickmaker © (30.07.07 13:39) [5]
uses
ActiveX, ComObj, ShlObj;
const
csWebFolders = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{BDEADF00-C265-11d0-BCED-00A0C90AB50F}';
procedure CreateWebFolder(aParent: HWnd; const aWebFolder: WideString);
var
BindCtx: IBindCtx;
BindOpts: BIND_OPTS;
dwFlags, dwNumChars: DWord;
DesktopFolder: IShellFolder;
MAlloc: IMAlloc;
WebFolderPIDL: PItemIDList;
wsPath: WideString;
begin
dwFlags := 0;
OleCheck(SHGetDesktopFolder(DesktopFolder));
OleCheck(CreateBindCtx(0, BindCtx));
FillChar(BindOpts, SizeOf(BindOpts), 0);
BindOpts.cbStruct := SizeOf(BindOpts);
BindOpts.grfMode := STGM_CREATE;
OleCheck(BindCtx.SetBindOptions(BindOpts));
wsPath := csWebFolders + '\' + aWebFolder;
OleCheck(DesktopFolder.ParseDisplayName(aParent, Pointer(BindCtx), PWideChar(wsPath),
dwNumChars, WebFolderPIDL, dwFlags));
OleCheck(SHGetMAlloc(MAlloc));
MAlloc.Free(WebFolderPIDL)
end;
clickmaker (2007-07-31 13:37:00) [4]сделал через создание ярлыка на папку в nethood с последующим открытием.
Rouse_ (2007-07-31 13:00:00) [5]My Network Places?
так этож ярлыки:
program GetNetHoodData;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, ShlObj, ActiveX, ComObj;
const
CSIDL_NETHOOD = $13;
Function GetFileNamefromLink(LinkFileName: String): String;
var
MyObject: IUnknown;
FileInfo: TWin32FINDDATA;
WidePath: array [0..MAX_PATH - 1] of WideChar;
Buff: array [0..MAX_PATH - 1] of Char;
begin
MyObject := CreateComObject(CLSID_ShellLink);
StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath));
(MyObject as IPersistFile).Load(WidePath, STGM_READ);
(MyObject as IShellLink).GetPath(Buff, MAX_PATH, FileInfo, SLGP_UNCPRIORITY);
Result := Buff ;
end;
var
Path: ShortString;
SR: TSearchRec;
begin
CoInitialize(nil);
SetLength(Path, 255);
if SHGetSpecialFolderPath(0, @Path[1],
CSIDL_NETHOOD, False) then
begin
Path := IncludeTrailingPathDelimiter(String(PChar(@Path[1])));
FindFirst(Path + '*.*', faAnyFile, SR);
repeat
if DirectoryExists(Path + SR.Name) then
Writeln(SR.Name + ' : ' +
GetFileNamefromLink(Path + SR.Name));
until FindNext(SR) <> 0;
end;
Readln;
end.
clickmaker (2007-07-30 13:39:00) [6]
> [4] Lacmus © (27.07.07 17:53)
> Есть предположение, что Internet Explorer создает
создает
но только после успешного логина на веб-шару
Должен же быть какой-то программный способ создания ярлыка на веб-папку, аналог мастера Add network place...
Lacmus (2007-07-27 17:53:00) [7]Есть предположение, что Internet Explorer создает при открытии папку в NetHood
clickmaker (2007-07-27 16:45:00) [8]а нет... рано радовался.
Так работает только, если есть такая папка в NetHood, т.е. либо открывали ее уже, либо надо создавать сначала
clickmaker (2007-07-27 16:31:00) [9]
> [1] Lacmus © (27.07.07 16:22)
ого! про гуиды была у меня мысля, но до такого не допер
Спасибо
Lacmus (2007-07-27 16:22:00) [10]EXPLORER.EXE ,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{BDEADF00-C265-11d0-BCED-00A0C90AB50F}\путь папки