delphi 启动外部程序

delphi 启动外部程序,第1张

Delphi 启动外部程序,,推荐使用 ShellExecute ,不推荐winexec!

winexec是16位代码,,有时会被杀软误报。。;另外winexec不能指定默认目录,有时启动的外部程序会出错!

在使用,ShellExecute 启动外部程序的时候,,如果这个外部程序不是和你的程序在同一个目录里,一定要指定一下,默认目录。例如,你启动的是 c:\windows\2.exe ,加上他的默认目录,如下:

ShellExecute(Handle,'open','拆好c:\windows\2.exe', nil, {这里写2.exe的默认目录}'旅中铅c:\windows\', SW_NORMAL)

你的意思是不是,象你这样写,就是先启动hypmain.exe 完以后才启动的2.exe!你想在同一时间启动这两个程序!

其实你就直接写成如下的,,时间间隔也就是几毫秒而已:

procedure TForm1.XPButton2Click(Sender: TObject)

begin

if (suiedit1.Text='1234'培纯)and(suiedit2.Text='1234') then

begin

ShellExecute(self.Handle,'open','internet\hypmain.exe', nil, nil, SW_NORMAL)

ShellExecute(self.Handle,'open','c:\windows\2.exe ', nil, nil, SW_NORMAL)

end

else

begin

Showmessage('输入的用户名或密码错误!')

end

end

首先确保你的程序在运行时拥有足够的权限,比如使用管理员运行。

通过FindWindow函数找到你想要控制的程序,比如通过主窗口的名称或者类名,如果你不知道,可以用Spy++这样的小工具来找。

然后继续通过FindWindow在父窗口中通过WindowsClass名找到你要控制的Edit,函数将会返回一个窗口句柄

然后你通过SendMessage(hwnd, WM_CHAR, .....)来向窗口发送字符。

WM_CHAR的具体含义可以查阅MSDN或者Delphi 自带的Win32帮助。

如果上述过程你觉得虚型蔽繁琐,可以通过Spy++直接获得租乱Edit的句柄。但是这样的话程序没有通用性,因为程序每次运行时窗口的句柄都是差州不一样的,spy++只能获得你这一次运行的句柄。你自己使用FindWindow则可以每次都做查找。

输入

一、控件输入Edit、DBEdit、族液裂MaskEdit、Memo、RichEdit、StringGrid、DBGrid等控件埋伏;

二、使用InputBox('标题','输入的兆闭项目','请输入内容')

输出

一、控件输出Edit、DBEdit、MaskEdit、Memo、RichEdit、StringGrid、DBGrid等控件也支持输出;

二、showmessage('这是输出的内容')

application.messagebox('这是输出的内容','提示',mb_ok)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8263351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存