一个关于在服务中调用选择目录函数的问题。 我写的服务需要调用函数SelectDirectory函数,在我的EXE中调用此函数没有任务问题,可是在服务中调用的时候总是先弹出一个错误:C:\Documents and settings\networkservice\桌面 引用了一个不可用的位置....。请问各位,如何让这个错误提示不出现呢?是不是我什么地方调用出现了问题??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SelectDirectory时,先设一个固定的目录作为默认目录。否则会以当前用户的桌面为默认目录,而C:\Documents and settings\networkservice是没有 桌面 目录的 我使用了一下函数来实现,错误依旧。function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;begincase uMsg of BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);end;Result := 0;end;function BrowsFolder(const Folder: string): string;varTitleName: string;lpItemID: PItemIDList;BrowseInfo: TBrowseInfo;DisplayName: array[0..MAX_PATH] of char;TempPath: array[0..MAX_PATH] of char;beginResult := Folder;FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);BrowseInfo.hwndOwner := GetActiveWindow;BrowseInfo.pszDisplayName := @DisplayName;TitleName := '请选择一个目录';BrowseInfo.lpszTitle := PChar(TitleName);BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;BrowseInfo.lpfn := BrowseCallbackProc;BrowseInfo.lParam := Integer(PChar(Folder));lpItemID := SHBrowseForFolder(BrowseInfo);if Assigned(lpItemId) thenbegin SHGetPathFromIDList(lpItemID, TempPath); GlobalFreePtr(lpItemID); Result := string(TempPath);endelse Result:='';end; 为BrowseInfo或TempPath设一个肯定存在的初始目录(如c:\) Delphi 2010 toggle form/unit 老是切换没反应? 要打开别的Form 后再回到想切换的Form 才能成功切换 求一SQL语句!!! 又一个Timer的问题,为什么timer并不循环呢? 为什么scroollbar滚动条要闪烁怎么让它失效,如何让上下左右键不起作用 使用Table插入数据是的问题 键盘模拟问题(不可能的任务给100分) 如何判断窗体的一个按钮是否执行? 开源一个图形操作软件的代码 关于图片显示的问题,给50分 '应用程序服务器'的简单问题 超NB的问题,有关于路由器 半年没有动过delphi了,特上来看看。delphi现在行情怎么样了?
否则会以当前用户的桌面为默认目录,而C:\Documents and settings\networkservice是没有 桌面 目录的
function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
begin
case uMsg of
BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);
end;
Result := 0;
end;function BrowsFolder(const Folder: string): string;
var
TitleName: string;
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of char;
TempPath: array[0..MAX_PATH] of char;
begin
Result := Folder;
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := GetActiveWindow;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := '请选择一个目录';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
BrowseInfo.lpfn := BrowseCallbackProc;
BrowseInfo.lParam := Integer(PChar(Folder));
lpItemID := SHBrowseForFolder(BrowseInfo);
if Assigned(lpItemId) then
begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
Result := string(TempPath);
end
else
Result:='';
end;