请问:(100分)

  • 主题发起人 主题发起人 maxvel
  • 开始时间 开始时间
M

maxvel

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何判断一个应用程序。EXE已经被执行过(或被打开了)?
2、在一个应用程序。EXE中,如何给触发的另一个执行程序传参数?
谢谢!
 
1、自己做Log,或者查查系统中的进程;

2、1)发消息;
2)共享内存文件;
3)写文件(很土的说)。
 
最好有例程·
 
1.FindWindow
2.ShellExecute
 
用全局原子
GH:= GlobalAddAtom(PChar('abcd'));//加入全局原子

if GlobalFindAtom(PChar('abcd')) <> 0 then//表示该程序已运行

程序结束时记得删除该全局原子
GlobalDeleteAtom(GH);
 
2、查找句柄,发送消息,接收部分设置专门的消息接收。
看得出来,你是要做类似UltraEdit之类的程序,只能打开一个,同时再打开别的就自动激活原来的。
同时使用原来的打开目标文件。
 
procedure TForm1.Button1Click(Sender: TObject);
var
FindHandle:THandle;
begin
FindHandle:=FindWindow(nil,'我的电脑');
if FindHandle<>0 then
begin
showmessage('我的电脑已经打开');
end
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//mspaint是图画,big.bmp是一张图片
WinExec(pchar('G:/WINNT/system32/mspaint.exe'+' e:/big.bmp'), SW_SHOWNORMAL);
end;
 
一、在工程文件中加入:
Hinst := createmutex(nil,false,'abcd');
if waitForSingleObject(Hinst,0)<>wait_timeout then
begin
Screen.Cursor:= -11;
try
Application.Initialize;
// GetVersionInfo;
// SplashForm := TSplashForm.Create(Application);
// SplashForm.Show;
// SplashForm.Update;
Application.Title := 'XXXX管理系统';
finally
// SplashForm.Hide;
// SplashForm.Free;
Application.Run;
Screen.Cursor:= 0;
end;
end
else
begin
if not iswindowVisible(Hinst) then
postmessage(Hinst,WM_USER,0,0);
setForegroundWindow(Hinst);
Application.Terminate;
end;
 
mspaint.exe是如何接收参数的?
 
首先非常感谢:
另外:
procedure TForm1.Button2Click(Sender: TObject);
begin
//mspaint是图画,big.bmp是一张图片
WinExec(pchar('G:/WINNT/system32/mspaint.exe'+' e:/big.bmp'), SW_SHOWNORMAL);
end;
中,你是把图片传给mspaint.exe',mspaint.exe'可以收到,但如果是一个普通的c++b执
行程序中如何得到另一个程序中传过来的参数(INT),并付给该C++B执行程序。(最好用ShellExecute)
谢谢!!
 
各位:
2、在一个应用程序。EXE中,如何给触发的另一个执行程序传参数?
是关键!!
 
在命令那里后面加上去就可以了。。。。

如果是由你去叫起那个程序的话。。[:)]
 
唉,看看paramstr的帮助好吗?
 
来自:maxvel, 时间:2002-1-18 12:15:00, ID:867060
各位:
2、在一个应用程序。EXE中,如何给触发的另一个执行程序传参数?
是关键!!

是不是这个意思:
已经打开一个写字板,在你的程序里输入一些文字,按下发送键,文字就在写字板里面显
示了。写字板不是重新开的,是已经打开了的!
对不对? :)

 
唉,看看paramstr的帮助好吗?
不是很明白你的意思,给个例程好吗?
 
呵呵,一定要写程序吗
2000中的审核可以作到,你只需察看日志即可
 
//我服了你。
//paramstr(0)表示程序自己,paramstr(1)是第一个命令行参数
//看看下面程序,开一个DOS窗口(或者在"运行"处)
//执行project1 文件名.txt可以得到结果

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists(paramstr(1)) and (copy(paramstr(1),length(paramstr(1))-3,4)='.txt') then
memo1.Lines.LoadFromFile(paramstr(1));
end;

end.
 
接受答案了.
 
后退
顶部