Articles of shellexecute

使用ShellExecute属性的特定属性选项卡

有没有办法打开到使用ShellExecute的属性动词属性中的特定选项卡? 有没有办法做到这一点? (不一定是ShellExecute,但不能find太多将显示文件的“属性窗口”) (模仿右键单击文件,select属性,然后单击详细信息选项卡的行为)

如何判断外部应用程序何时以delphi结束

我正在使用ShellExecute来运行外部应用程序如何知道外部应用程序何时结束? 在这里我的代码 theProgram := 'MySql.exe'; itsParameters := ' -u user1 -ppassword -e "create database abc"'; rslt := ShellExecute(0, 'open', pChar (theProgram), pChar (itsParameters), nil, SW_SHOW);

ShellExecute:动词“runas”不适用于path中有空格的batch file

我正在使用ShellExecuteW来启动一个batch file。 代码看起来有点像这样: ShellExecuteW(GetDesktopWindow(), wide_verb.c_str(), wide_filename.c_str(), wide_parameters.c_str(), NULL, SW_SHOW); wide_variables的types是wstring 。 此代码适用于文件path和动词的任意组合,除了动词“runas”(获取pipe理员权限)以及在给定pathwide_filename包含空格的batch file。 popupUAC提示符,确认后一会儿,命令提示符就会闪烁,表示找不到path,在path的第一个空格处切断。 我已经尝试用额外的引号包装文件名,但是没有帮助。 原因可能是.bat文件不是真正的“可执行文件”,而是文件,因此 ShellExecuteW(GetDesktopWindow(), L"runas", L"C:\\Path To\\file.bat", L"Parameters For Batch", NULL, SW_SHOW); 内部映射到高级执行 cmd.exe /C "C:\Path To\file.bat" "Parameters for Batch" 而应该是沿着这条路线的东西 cmd.exe /S /C " "C:\Path To\file.bat" Parameters for Batch " 事实上,如果我执行这样的事情: ShellExecuteW(GetDesktopWindow(), L"runas", L"cmd.exe", L"/S /C \" \"C:\\Path To\\file.bat\" Parameters For […]

在浏览器中以编程方式select文件

在我的应用程序中,我可以以编程方式打开资源pipe理器并使用以下代码select一个文件 void BrowseToFile(LPCTSTR filename) { CString strArgs; strArgs = _T("/select,\""); strArgs += filename; strArgs += _T("\""); ShellExecute(0, _T("open"), _T("explorer.exe"), strArgs, 0, SW_NORMAL); } 我的问题是,如果我用不同的文件第二次调用这个函数,但在同一个文件夹中,资源pipe理器中的select不会更改为新文件,而是保留在以前的文件上。 例如,如果我用C:\path\to\file1.txt调用我的函数,将会打开一个新的资源pipe理器窗口,并selectfile1.txt 。 如果我再次用C:\path\to\file2.txt调用我的函数,现有的资源pipe理器窗口将被激活,但是select仍然在file1.txt 。 有没有办法强制资源pipe理器更新select或更好的方法来完成这个? 编辑: 上面提到的行为是在Windows XP上。 看来Vista / Win7上的行为是不同的。 每个调用将打开一个新的资源pipe理器实例并select该文件。 我的主要目标是复制Visual Studio选项以打开文档的包含文件夹 。 在Visual Studio中的这个function在XP,Vista和Win7上performance相同。 如果具有相同文件夹的另一个实例已经打开,它将不会创build新实例,但会将select更新为新文件。 如果有人知道Visual Studio如何完成这个,我很想知道它。

WOW64困境(.lnk快捷键)

我使用的是Windows 7(x64)和Delphi 2010。 我在写一个模拟开始菜单的组件。 但是,我遇到了以下问题: 如果我尝试用ShellExecute打开一个快捷方式(.lnk文件),只要%ProgramFiles%是快捷方式的目标path的一部分,就会失败(它将查看C:\ Program Files(x86)文件夹而不是C :\ Program Files ); 如果%ProgramFiles%是图标文件path的一部分(与上面相同的问题),则ShGetFileInfo无法提取系统图像列表中图标的正确索引。 有没有解决上述问题,或者我必须等待本地64位delphi可用于此工作?

在新的浏览器进程中打开一个URL

我需要在新的浏览器进程中打开一个URL。 当浏览器进程退出时,我需要得到通知。 我目前使用的代码如下: Process browser = new Process(); browser.EnableRaisingEvents = true; browser.StartInfo.Arguments = url; browser.StartInfo.FileName = "iexplore"; browser.Exited += new EventHandler(browser_Exited); browser.Start(); 显然,这不会因为“FileName”被固定为iexplore,而不是用户的默认Web浏览器。 如何找出用户的默认网页浏览器是什么? 我正在运行Vista->前进。 尽pipe如果可能的话,XP会很好的支持。 更多的上下文:我创build了一个非常小的独立的Web服务器,从本地磁盘提供一些文件。 在启动服务器的最后,我想启动浏览器。 一旦用户完成并closures浏览器,我想退出Web服务器。 上面的代码完美的工作,除了只使用IE浏览器。 提前致谢!