标签: shellexecute

ShellExecuteW在Windows 8.1上运行不正常?

ShellExecuteW在Windows8.1上调用标准调用来打开PPS(powerpoint slide)文件.

这在Windows 7上运行正常.在Windows 8.1上.它报告"没有与打开文件相关的程序".当然,文件关联已设置,如果文件已保存并从资源管理器中运行(双击),则打开就可以了.我还尝试更改关联并关联另一个程序,然后关联回PPS查看器,没有任何改进.它只对W8.1不起作用,但同样的调用适用于早期的Windows.

任何人都可以告诉我这里可能有什么问题吗?

用于打开文件的代码非常简单,我发现它没有错误:

HINSTANCE hinst = ShellExecuteW(NULL, L"open", L"C:\\path\\to\\file.pps", NULL, NULL, SW_SHOWNORMAL);

// Check if result is error
if ((int)hinst <= 32)
    {
    wchar_t buf[512] = { 0 };
    FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, 512, NULL);

    MSGBOX(buf);
    }
Run Code Online (Sandbox Code Playgroud)

我使用免费的PPS查看器,如下所示:http: //www.microsoft.com/en-us/download/details.aspx?id = 13

我发现类似的东西指出这可能是Win8.1中的一个错误.谁能证实这一点?或者揭示一个解决方法?

c++ windows winapi shellexecute windows-8.1

1
推荐指数
1
解决办法
2174
查看次数

通过 SHELLEXECUTEINFO 向 .exe 发送参数

我有一个需要 2 个参数的 .exe。我需要在运行时在我的程序之间运行 .exe 文件。我曾经ShellExecuteEx运行过 .exe 文件,但它没有接受参数。请帮助我哪里出错了。我在下面发布我的代码。

void StartProgram() {
    SHELLEXECUTEINFO lpExecInfo;
    lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    lpExecInfo.lpFile = L"F:\\EXEFolder\\RunMe.exe"; // Path to the .exe
    lpExecInfo.fMask = SEE_MASK_DOENVSUBST | SEE_MASK_NOCLOSEPROCESS;
    lpExecInfo.hwnd = NULL;
    lpExecInfo.lpVerb = L"open"; // to open  program
    lpExecInfo.lpParameters = L"D:/input.csv" "F:/output.csv;"; //Arguments to be passed to .exe
    lpExecInfo.lpDirectory = NULL;
    lpExecInfo.nShow = SW_SHOW;
    lpExecInfo.hInstApp = (HINSTANCE)SE_ERR_DDEFAIL;   
    ShellExecuteEx(&lpExecInfo);
    //wait until a file is finished printing
    if (lpExecInfo.hProcess != NULL)
    {
        ::WaitForSingleObject(lpExecInfo.hProcess, INFINITE);
        ::CloseHandle(lpExecInfo.hProcess);
    }
}
Run Code Online (Sandbox Code Playgroud)

c c++ shellexecute runtime.exec shellexecuteex

1
推荐指数
1
解决办法
88
查看次数

如何获取winexec或shellexecute中执行的句柄?

我用来创建一个自定义函数,如winexec(...):Hwnd将重新执行已执行应用程序的句柄.

我确实使用了findwindow()但是如果它改变了窗口标题就有问题.

delphi shell hwnd shellexecute handle

0
推荐指数
1
解决办法
7545
查看次数

Delphi使用ShellExec运行dos命令时获取返回值

如果我在命令/ dos窗口中执行以下命令

schtasks.exe /delete /tn "MMP4CDownloadCheck" /f
Run Code Online (Sandbox Code Playgroud)

结果如下

ERROR: The specified task name "MMP4CDownloadCheck" does not exist in the system.
Run Code Online (Sandbox Code Playgroud)

使用我的应用程序(Delphi XE)中运行相同命令时是否可以检索返回值ShellExec

我运行如下:

AHWnd := ShellExecute(0, nil, PChar('schtasks.exe'), PChar(Params), nil, SW_HIDE);
Run Code Online (Sandbox Code Playgroud)

先感谢您.

问候,彼得.

delphi shellexecute

0
推荐指数
1
解决办法
3263
查看次数

强制使用Internet Explorer打开网页

我需要使用Internet Explorer打开网页,即使它不是预定义的浏览器.

(例如,Chrome是预定义的,但我想打开www.ThisRunsOnlyOnInternetExplorer.com.

怎么做到这一点?当然,ShellExecute我知道如何打开默认浏览器.

当然,这必须适用于所有Windows操作系统和所有Internet Explorer版本,因此我无法对其路径进行编码iexplorer.exe.

你能建议一个解决方案吗?

注意:如果有一种方法可以获得带有一些API的iexplorer.exe的路径可能就是gtet那条路径然后使用ShellExecute来运行

PATH_TO_INTERNET_EXPLORER_EXE www.ThisRunsOnlyOnInternetExplorer.com
Run Code Online (Sandbox Code Playgroud)

delphi internet-explorer shellexecute

0
推荐指数
1
解决办法
5080
查看次数

Delphi 10.1 ShellExecute 错误不兼容类型“HWND”和“TWindowsHandle”

我在 Delphi 10.1 中遇到以下代码的问题:

ShellExecute(handle,'open',PChar(filename), '','',SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

当我尝试运行代码时,它给了我这个错误:

不兼容的类型:“HWND”和“TWindowHandle”

delphi shellexecute

0
推荐指数
1
解决办法
4212
查看次数

从delphi显示目录

我想使用Delphi(7)的DOS命令显示目录的内容.使用Win10 - 64

以下程序显示DOS shell但不显示目录内容.我的代码出了什么问题?

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellapi;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

  implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
   i := ShellExecute(Handle, nil, 'cmd.exe', PChar(' dir'), nil, SW_SHOW);
   caption := inttostr(i);
end;

end.
Run Code Online (Sandbox Code Playgroud)

windows delphi cmd shellexecute

0
推荐指数
1
解决办法
372
查看次数

为什么ShellExecute不起作用?

#include "ShellAPI.h";
ShellExecute(Handle,NULL,"file.txt",NULL,NULL,SW_RESTORE);
Run Code Online (Sandbox Code Playgroud)

为什么此代码不起作用?

错误画面如下: 忙碌的猫

c++ shellexecute

-1
推荐指数
1
解决办法
4676
查看次数

ShellExecute不适用于其他计算机

我使用Win32Api制作了一个程序.在程序中,它具有"ShellExecute"短语,以便执行chrome进行搜索.以下是我写的内容的抽象.

#include <windows.h>
#include <shellapi.h>
int main () {
    ShellExecute(NULL, L"open", searching_url, NULL, NULL, SW_SHOWMAXIMIZED);
}
Run Code Online (Sandbox Code Playgroud)

它适用于我的电脑.但是,我把这个Windows应用程序发送给其他人,他们说它不起作用.我的意思是只有shellexecute不起作用.我无法抓住从哪里开始弄清楚这里有什么问题.

你能否建议我如何以结构化的方式解决这个问题?谢谢.

c++ winapi release shellexecute

-1
推荐指数
1
解决办法
139
查看次数

当我使用ShellExecute时,为什么我的命令不像我预期的那样运行?

我试图从我的Delphi代码使用命令行实用程序(它与dos命令行中的测试一起使用)将PDF转储到文本.

这是我的代码

if fileexists(ExtractFilePath(Application.ExeName) + 'pdftotext.exe') then
begin
  ShellExecute(H,'open', 'pdftotext.exe', PWideChar(fFileName), nil, SW_SHOWNORMAL);
  if fileExists(changeFileExt(fFileName, '.txt')) then
    Lines.LoadFromFile(changeFileExt(fFileName, '.txt'))
  else
    ShowMessage('File Not found');
end;
Run Code Online (Sandbox Code Playgroud)

在代码中放置断点并单步执行时,它会使用它

if fileExists(changeFileExt(fFileName, '.txt')) then  
Run Code Online (Sandbox Code Playgroud)

但是返回false,因此调用了Shellexecute,但是没有转储任何文件

我做错了什么?

delphi winapi command-line shellexecute delphi-2010

-2
推荐指数
1
解决办法
1700
查看次数

需要对此Delphi代码进行一些解释

我有这个代码,需要对这些问题进行一些解释:

  • 首次使用"ShellExecHookXample"部分之后的"_TLB"是什么?

  • 我应该如何在Delphi 7中使用此代码并制作独立的exe文件?(我不知道放置代码并调用其方法的适当位置.因为它似乎是一个单元或什么?)

  • 如果可能请为我描述代码.

提前致谢.

windows delphi api hook shellexecute

-4
推荐指数
1
解决办法
314
查看次数