我想检查一个特定的文件是否可以通过ShellExecute成功"打开",所以我试图使用AssocQueryString来发现这个.
例:
DWORD size = 1024;
TCHAR buff[1024]; // fixed size as dirty hack for testing
int err = AssocQueryString(0, ASSOCSTR_EXECUTABLE, ".mxf", NULL ,buff , &size);
openAction->Enabled = ((err == S_OK) || (err == S_FALSE)) && (size > 0);
Run Code Online (Sandbox Code Playgroud)
现在,这几乎可行.如果有注册的应用程序,我会得到字符串.
但是,有一个问题:在Vista上,即使没有注册的应用程序,它返回应用程序c:\ Windows\System32\shell32.dll是关联的,这是带来100%无用的东西"Windows无法打开这个文件:使用Web服务找到正确的程序?" 对话.
显然我想要隐藏最终用户的cr*p,但简单地将返回的字符串与常量进行比较似乎是一种丑陋,暴力和脆弱的方式.
此外,黑客入侵注册表以完全禁用此对话框不是一个好主意.
什么是更好的选择?
我在 windows vista 中使用了“ ShellExecute ”函数
有没有办法将输出通过管道传输到文件?
IE
MySqlDump.exe '-u user1 -ppassword dbName > TheOutputFile.Sql
这是我的代码
theProgram := 'MySqlDump.exe';
itsParameters := '-u user1 -ppassword dbName';
rslt := ShellExecute(0, 'open',
pChar (theProgram),
pChar (itsParameters),
nil,
SW_SHOW);
Run Code Online (Sandbox Code Playgroud)
编辑:
我试过了
itsParameters := '-u user1 -ppassword dbName > TheOutputFile.Sql';
Run Code Online (Sandbox Code Playgroud)
但这不起作用
我目前正在使用 ShellExecute“打开”在用户浏览器中打开一个 URL,但在 Win7 和 Vista 中遇到了一些麻烦,因为该程序作为服务运行。
当 ShellExecute 打开浏览器时,它似乎读取的是“本地管理员”配置文件而不是用户的配置文件。例如,如果键盘上的用户将 Firefox 作为他的默认浏览器,它可能会打开 IE(这是管理员的默认设置)。
我知道“runas”动词可以用来提升,但你如何反其道而行之?是否可以通过服务在标准用户桌面上的默认浏览器中打开 URL?
我是视觉基础的新手。我正在尝试.exe从 VB执行文件。但我没有得到输出。我.exe有命令行参数。以下是我的代码
Private Sub Command1_Click()
Shell "D:\FEP\extractFEPData.exe data.txt", vbNormalFocus
End Sub
Run Code Online (Sandbox Code Playgroud)
在 cmd 提示符下如果我给命令extractFEPData.exe data.txt它正在解析文件。但是在 VB 中单击命令按钮后什么也没有发生。
请帮我。
在我的 VBA 程序中,我需要运行应用程序“Skitch”并使用它打开一个 JPEG 文件。这是我一直在使用的命令:
ReturnValue = Shell("C:\Program Files (x86)\Evernote\Skitch\Skitch.exe " & """" & aPic & """", 1)
Run Code Online (Sandbox Code Playgroud)
...其中“aPic”是路径和文件名。
经过一些试验,我想我需要像在提升的命令窗口中一样运行命令(换句话说,以“管理员身份”运行它)。是否可以提升运行 Shell?
如果这是不可能的:如果我理解正确,使用 ShellExecute 而不是 Shell 将自动提升命令。但我对它不太熟悉。有人可以告诉我如何使用 ShellExecute 运行我的命令吗?(顺便说一句,我知道 ShellExecute 适合运行与文件类型相关的命令,但在此用户的计算机上 *.jpg 可能不会与 Skitch 相关联。)
谢谢。
我有一个 python 程序,我尝试将文档发送到打印机。它在我的机器上运行良好,将本地打印机设置为默认打印机,并通过 USB 与我的笔记本电脑连接。但是,当我在另一台计算机上尝试使用其默认打印机位于网络中时,它无法工作。我得到的错误是:
pywintypes.error: (31, 'ShellExecute', '连接到系统的设备无法运行。')
出现问题的代码如下:
win32api.ShellExecute(0,"print",doc_path,None,".",0)
Run Code Online (Sandbox Code Playgroud)
我认为问题是因为打印机是使用网络而不是 USB 连接的,但这可能是另一回事。
谢谢你的帮助。
我需要在新的浏览器进程中打开一个URL.我需要在浏览器进程退出时收到通知.我目前使用的代码如下:
Process browser = new Process();
browser.EnableRaisingEvents = true;
browser.StartInfo.Arguments = url;
browser.StartInfo.FileName = "iexplore";
browser.Exited += new EventHandler(browser_Exited);
browser.Start();
Run Code Online (Sandbox Code Playgroud)
显然,这不会到期,因为"FileName"固定为iexplore,而不是用户的默认Web浏览器.如何确定用户的默认Web浏览器是什么?
我正在运行Vista->前进.虽然如果可能的话XP会很好.
更多上下文:我创建了一个非常小的独立Web服务器,它可以从本地磁盘上提供一些文件.在启动服务器结束时,我想启动浏览器.用户完成并关闭浏览器后,我想退出Web服务器.除了仅使用IE之外,上面的代码完美地运行.
提前致谢!
有没有办法从命令行执行我的AutoIt脚本(.au3文件)?
我希望能够以编程方式检测给定的exe是否是shellex,或者是否在CMD.EXE中以交互方式输入和执行.
有没有关于exe的启动方式,表明用于启动它的机制?
上下文:Windows XP,Visual Studio 6语言.
我一直在寻找原始问题的答案..如何(以编程方式)确定我的win32api.ShellExecute语句成功执行,如果成功执行,则执行os.remove()语句.
研究我发现ShellExecute()调用返回HINSTANCE.进一步挖掘我发现如果成功,ShellExecute()将返回HINSTANCE> 32.我的问题/问题是,如何使用它来控制程序的其余部分?我尝试使用if HINSTANCE> 32:语句来控制下一部分,但我得到了一条NameError: name 'hinstance' is not defined消息.通常这不会让我感到困惑,因为这意味着我需要在引用之前定义变量'hinstance'; 但是,因为我认为ShellExecute应该返回HINSTANCE,我认为它可以使用吗?
这是我的完整代码,我试图实现这一点.请注意,在我的print_file()中,我将hinstance分配给完整的win32api.ShellExecute()命令,以尝试捕获hinstance并在函数末尾显式返回它.这也不起作用.
import win32print
import win32api
from os.path import isfile, join
import glob
import os
import time
source_path = "c:\\temp\\source\\"
def main():
printer_name = win32print.GetDefaultPrinter()
while True:
file_queue = [f for f in glob.glob("%s\\*.txt" % source_path) if isfile(f)]
if len(file_queue) > 0:
for i in file_queue:
print_file(i, printer_name)
if hinstance > 32:
time.sleep(.25)
delete_file(i)
print "Filename: %r has printed" % i
print
time.sleep(.25)
print
else:
print …Run Code Online (Sandbox Code Playgroud) shellexecute ×10
winapi ×4
windows ×3
c++ ×2
exe ×2
vb6 ×2
windows-7 ×2
autoit ×1
c# ×1
cmd ×1
command-line ×1
delphi ×1
printing ×1
python ×1
python-2.7 ×1
python-3.x ×1
pywin32 ×1
system ×1
uac ×1
vba ×1