标签: shellexecute

摆脱ShellExecute引起的邪恶延迟

这是困扰我一段时间的事情,只需要解决这个问题.每次我调用ShellExecute来打开一个外部文件(无论是文档,可执行文件还是URL),这都会导致程序中的锁定很长,然后ShellExecute会生成新进程并返回.有谁知道如何解决或解决这个问题?

编辑:正如标签可能表明的那样,这是在使用C++的Win32上.

c++ winapi shellexecute

3
推荐指数
2
解决办法
2500
查看次数

在Delphi 2010中读取ShellExecute()的输出文件?

我使用ShellExecute命令运行exe文件,该文件获取输入文本文件并返回输出文本文件.我写得像这样:

ShellExecute(mainFormHandle, 'open', 'Test.exe',
    'input.txt output.txt', nil, sw_shownormal);

//Read the output file...
S_List.LoadFromFile('output.txt');
Writeln(S_List[0])
Run Code Online (Sandbox Code Playgroud)

我在运行此命令之前提供了input.txt文件.在我的程序的每次运行中,输入文件都会更改,输出文件也会更改.

问题是这样的:我看不到输出文件中的变化!在控制台中写入的行来自上一个文件,而不是新更改的文件.我的意思是,浏览器中的文件已更改,但我读取的文件仍然是旧文件.

这看起来有点奇怪,但我想知道有没有办法在读取之前刷新输出文件?或者我在这里遗失了什么?

提前致谢.

delphi shellexecute delphi-2010

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

我可以从Perl捕获shell调用吗?

我有一个调用其他程序的Perl脚本,即调用system和/或exec和/或open使用管道和/或使用反引号运算符.

我是否可以运行此脚本,以便打印出上述每个参数的参数,以便我可以看到它调用的是什么?

例如像这样的程序,我无法修改

#!/usr/bin/perl
sub get_arg {return "argument$_[0]";}
system "./foo", get_arg(1), get_arg(2);
print `./foo abc def`;
Run Code Online (Sandbox Code Playgroud)

调用了类似这样的东西

perl --shell-trace-on ./myscript.pl

在这种情况下输出

./foo argument1 argument2
./foo abc def
Run Code Online (Sandbox Code Playgroud)

抛弃myscript.pl的正常输出或将其与此跟踪混合是可以接受的.

非常感谢.

debugging shell perl shellexecute system-calls

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

如何通过Delphi 2009打开PDF文件(窗口默认程序Adobe Reader)?

所以基本上当我尝试打开W​​indows默认使用Adobe Reader打开的PDF文件时,没有任何反应.如果我将默认程序设置为Internet Explorer,它可以工作..

这是我的代码

var
openDialog : TOpenDialog;    // Open dialog variable
begin
  openDialog := TOpenDialog.Create(self);
  openDialog.InitialDir := MaskEditLocation.Text;
  if openDialog.Execute then
   ShellExecute(Handle, PChar('Open'), PChar(openDialog.FileName), nil, nil,
   SW_SHOWNORMAL);
  openDialog.Free;
end;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢您的帮助!

pdf delphi shellexecute delphi-2009 adobe-reader

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

如何从shell脚本文件中调用PHP文件

我需要一个有循环的shell脚本.在每次循环迭代中,它需要使用一些参数调用PHP文件.有什么办法吗?

php bash shellexecute

3
推荐指数
1
解决办法
2万
查看次数

从shell_execute启动时,Clickonce程序不会启动

我有一个很老的程序,我无法控制.它启动一个文件类型及其默认应用程序(我无法修改此代码):

LET Err (SHELL_EXECUTE 'open' (FIX_MESG '"{1}"' File_name) '' '')
Run Code Online (Sandbox Code Playgroud)

^^上述代码有效,只要该文件类型与ClickOnce程序无关.

旧程序是32位,操作系统是Windows 7 64位.我可以将我的clickonce程序编译为任何东西,但似乎都没有.(我试过x86,x64和anyCPU)

如何使32位程序使用shell执行在64位操作系统上启动ClickOnce程序?

更多细节:这是一个可重现的错误.建立2个程序.程序1是Clickonce程序.将其与任何文件类型相关联.程序2将执行shell执行命令以打开与clickonce程序关联的任何文件类型.如果将程序2编译为x86,它将为您提供成功响应,但不执行任何操作.

控制台shell执行程序的测试代码:

private static void Main()
{
    int value = ShellExecuteA(IntPtr.Zero, "open", @"C:\Users\bsee\Desktop\testfile.ecn2", "", "", 0);
        if (value > 32)
            MessageBox.Show("Clickonce reports success. But did it actually start?");
}

[DllImport("Shell32.dll")]
public static extern int ShellExecuteA(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirecotry, int nShowCmd);
Run Code Online (Sandbox Code Playgroud)

c# clickonce shellexecute

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

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

我正在使用ShellExecute来运行外部应用程序如何判断外部应用程序何时结束?

在这里我的代码

theProgram     :=  'MySql.exe';
itsParameters  :=  ' -u user1 -ppassword -e "create database abc"’;
rslt := ShellExecute(0, 'open',
                       pChar (theProgram),
                       pChar (itsParameters),
                       nil,
                       SW_SHOW);
Run Code Online (Sandbox Code Playgroud)

windows delphi shellexecute

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

呼吁shellexecte导致防病毒发出警告?

什么时候我编写以下代码行在任何app我使用delphi程序的任何地方

ShellExecute(self.WindowHandle,'open','www.yahoo.com',nil,nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

kaspersky 2010发出此消息的''行为类似于pdm.hidden数据发送.检测'

为什么这样,我怎么摆脱这个

注意:我正在使用delphi 2007

更新:抱歉没有清除,当我运行我的程序av给我这个错误

delphi winapi shellexecute

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

如果由于C++中没有文件关联而导致ShellExecute失败,如何打开窗口的默认对话框?

只要文件具有正确的关联,我就可以使用Windows ShellExecute函数打开一个没有问题的文件.

如果不存在关联,我想使用默认的Windows对话框打开文件:

图片

这可能吗?如果是这样的话?

winapi shellexecute fileopendialog

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

C ++与ShellExecute的开放链接

如果我这样写:

    ShellExecute(NULL, "open", "www.google.com", NULL, NULL, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

一切都很好,而且必须如此。

但是,我希望用户可以输入他想去的链接。

std::cout<<"Enter the link: ";
            char link;
            std::cin>>link;
        ShellExecute(NULL, "open", link, NULL, NULL, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我会得到一个invalid conversion from 'char' to 'const CHAR*错误。

那么,有没有办法正确地做到这一点?

c++ url shellexecute hyperlink

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