标签: shellexecute

如何从命令行指定名称和描述安装Windows服务?

我用Delphi为客户端服务器应用程序创建了一个Windows服务.

要安装它,我使用

c:\Test\MyService.exe /install (or /uninstall)
Run Code Online (Sandbox Code Playgroud)

这将安装该服务,并在Windows服务中列出"MyService"名称和空描述.

如何定义不同的名称并插入描述(在运行时可以看到services.msc)?

注意:我需要这个,因为在同一台机器上我需要安装更多次相同的服务(每个数据库1个).

目前我唯一的解决方法是重命名服务exe,但我更愿意找到正确的命令行方式(因为我这样做ShellExecute).

更新:不知怎的,我会寻找类似的东西(这当然只是出于解释原因! - InstallService.exe是我刚刚发明的名字):

InstallService.exe c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'
Run Code Online (Sandbox Code Playgroud)

而且更紧凑的版本会很好:

c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'
Run Code Online (Sandbox Code Playgroud)

windows-services shellexecute

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

如何shell到另一个应用程序并让它以delphi形式出现

在Delphi中,我使用ShellExecute多年来启动(并可选择等待)其他应用程序.现在,我需要在我的一个Delphi应用程序表单中显示其中一个应用程序.我已经尝试了下面的代码作为一个简单的测试来打开记事本(它确实如此)并在我的表单上显示PAnel1中的结果(它没有).有些人可以让我走上正轨吗?谢谢

var
  Rec          : TShellExecuteInfo;
  wnd : HWnd;
const
  AVerb = 'open';
  AParams = '';
  AFileName = 'Notepad.exe';
  ADir = '';
begin
  FillChar(Rec, SizeOf(Rec), #0);

  Rec.cbSize       := SizeOf(Rec);
  Rec.fMask        := SEE_MASK_NOCLOSEPROCESS;
  Rec.lpVerb       := PChar( AVerb );
  Rec.lpFile       := PChar( AfileName );
  Rec.lpParameters := PChar( AParams );
  Rec.lpDirectory  := PChar( Adir );
  Rec.nShow        := sw_Show;

  ShellExecuteEx(@Rec);

  wnd := Windows.FindWindow( 'Notepad', nil );
  Windows.SetParent( Wnd, PAnel1.Handle );

end;
Run Code Online (Sandbox Code Playgroud)

delphi shellexecute setparent

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

将空窗口句柄传递给ShellExecute是否可以?

我有一个Delphi控制台应用程序,最终需要启动两个应用程序之一.

我遇到一些问题让ShellExecute无错误地工作,我认为问题与没有控制台应用程序的句柄有关.

引起我悲伤的一句话是:

ShellExecute(0, 'open', 'someapplication.exe', nil, nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

我认为句柄中的0是问题,因为它编译好并在调试器中运行OK,但如果我尝试运行可执行文件,我会得到一个未处理的错误(控制台应用程序认为它已经结束了).

delphi console shellexecute delphi-2010

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

如何启动文件/目录/ URL的关联应用程序?

Linux似乎很简单:xdg-open <file/directory/URL>.

显然,Mac是相似的:open应该用来代替xdg-open.我无法访问Mac,因此无法测试它.

对于Windows,我发现了4个不同的建议,而我尝试过的建议失败了.

我已经尝试的第一个3 system()QProcess::startDetached(),并"http://www.stackoverflow.com"作为参数,但都失败了; start但是从命令行工作得很好.我还没有尝试过ShellExecute.

什么是Windows相当于xdg-open在我看来,这是start为什么我的尝试start失败了?

ShellExecute我唯一的选择吗?


编辑我认为QDesktopServices::openUrl()仅适用于网页,因为它不适用于文件或目录.

一些调试后,我想通了,如果我取代\\/在Windows上的路径,它适用于文件,但该目录还没有打开.我有什么想法我做错了吗?

QDir dir("C:/Documents and Settings/ali");

qDebug() << "Exists? " << dir.exists();

qDebug() << dir.absolutePath();

QDesktopServices::openUrl(QUrl(dir.absolutePath()));

qDebug() << …
Run Code Online (Sandbox Code Playgroud)

c++ winapi qt cross-platform shellexecute

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

无论如何,在生成进程时是否指定了PrintTo打印机?

是)我有的

我目前正在编写一个程序,它接受一个指定的文件并用它执行一些操作.目前,它打开它,和/或将其附加到电子邮件并将其邮寄到指定的地址.

该文件可以是以下格式:Excel,Excel报表,Word或PDF.

我目前正在做的是用文件的路径生成一个进程然后启动进程; 但是我也正在尝试修复我添加的错误功能,它根据指定的设置将动词"PrintTo"添加到启动信息中.

我需要的

我想要完成的任务是我想打开文档,然后将自己打印到程序本身命名的指定打印机.然后,文件应自动关闭.

如果没有办法一般地执行此操作,我们可能能够为每种单独的文件类型提供一种方法.

你需要什么

这是我正在使用的代码:

ProcessStartInfo pStartInfo = new ProcessStartInfo();
pStartInfo.FileName = FilePath;

// Determine wether to just open or print
if (Print)
{
    if (PrinterName != null)
    {
       // TODO: Add default printer.
    }

    pStartInfo.Verb = "PrintTo";
}

// Open the report file unless only set to be emailed.
if ((!Email && !Print) || Print)
{
    Process p = Process.Start(pStartInfo);
}
Run Code Online (Sandbox Code Playgroud)

我是怎么做的......

仍然难倒......可能会像微软那样称呼它,'那是设计'.

c# process shellexecute printers

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

如何在chrome扩展中执行shell执行?

我没有找到在chrome.*API甚至实验中做到这一点的方法.它不会通过wscript运行,因此 ActiveXObject("Shell.Application")不允许.

我担心我唯一的选择是使用NPAPI建立一个dll,但我想知道是否有更简单的方法.

google-chrome shellexecute google-chrome-extension

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

如何使用javascript中的参数运行cmd.exe

我正在尝试编写javascript,它应该运行带有指定命令行的cmd.exe,例如docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit:

我在microsoft网站上阅读shellexecute方法后准备一个代码:

var objShell = new ActiveXObject("Shell.Application");
        objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1");
Run Code Online (Sandbox Code Playgroud)

但它不会在cmd.exe中插入命令行.

有人能帮助我吗?先感谢您.

javascript command-line cmd shellexecute

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

在Windows资源管理器中选择文件并不总是有效

使用以下内容

explorer.exe /select, "c:\path\to\file.txt"
Run Code Online (Sandbox Code Playgroud)

我可以打开Windows资源管理器并选择该文件.在Delphi中我这样选择"Parm"文件:

ShellExecute(Application.MainForm.Handle, 'OPEN', PChar('explorer.exe'), PChar('/select,"' + Parm + '"'), nil, SW_NORMAL);
Run Code Online (Sandbox Code Playgroud)

它有效.我的问题是这样的:如果我在最近打开的资源管理器中选择一个不同的文件(单击另一个文件),然后调用上面的代码,则不再选择"Parm"文件.有趣的是,有一些程序再次选择文件.例如,ITunes总是选择所需的文件.

有没有人知道如何让Explorer始终选择指定的文件?

delphi windows-explorer shellexecute

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

读取shell命令输出的最佳方法

在Vim中,读取shell命令输出的最佳(可移植和快速)方法是什么?此输出可能是二进制的,因此包含空值,并且(不)具有重要的尾随换行符.我看到当前的解决方案

  1. 使用system().问题:不适用于NULL.
  2. 使用:read !.问题:不会保存尾随换行符,试图智能检测输出格式(dos/unix/mac).
  3. 使用!重定向到临时文件,然后readfile(, "b")读取它.问题:对fs的两个调用,shellredir选项也默认重定向stderr并且它应该不那么可移植('shellredir'这里提到因为它可能被设置为有效值).
  4. 使用system()和过滤输出xxd.问题:非常慢,最不便携(没有相当于'shellredir'管道).

还有其他想法吗?

vim shell shellexecute

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

有没有办法检测显示器是否已插入?

我有一个用C++编写的自定义应用程序,它控制连接到嵌入式系统的监视器上的分辨率和其他设置.有时系统无头启动并通过VNC运行,但可以在以后插入监视器(启动后).如果发生这种情况,则在启用监视器之前,监视器不会输入视频.我发现调用"displayswitch/clone"会启动监视器,但我需要知道监视器何时连接.我有一个每5秒运行一次的计时器并查找显示器,但是我需要一些API调用来告诉我显示器是否已连接.

这里有一些psudocode来描述我所追求的(当计时器每5秒到期时执行什么).

if(If monitor connected) 
{
   ShellExecute("displayswitch.exe /clone);
}else
{
   //Do Nothing
}
Run Code Online (Sandbox Code Playgroud)

我试图GetSystemMetrics(SM_CMONITORS)返回监视器的数量,但如果监视器已连接,则返回1.还有其他想法吗?

谢谢!

c++ windows winapi shellexecute windows-shell

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