如何在某一个EXE的程序加上一个参数让其变成从属性
比如有两个EXE程序: AB.EXE ABC.EXE
在AB.EXE中可以调用那个ABC.EXE程序,ABC.EXE程序不能“独立运行”
若“独立运行”的话,就提示,“程序不能运行,必须在AB.EXE中
运行这个程序,因为这个程序是从属性程序只能被调用而不能独立运行”
比如有两个EXE程序: AB.EXE ABC.EXE
在AB.EXE中可以调用那个ABC.EXE程序,ABC.EXE程序不能“独立运行”
若“独立运行”的话,就提示,“程序不能运行,必须在AB.EXE中
运行这个程序,因为这个程序是从属性程序只能被调用而不能独立运行”
解决方案 »
- 新人提菜问题,如何做算术运算。
- delphi总是提示用户sa登陆失败但是测试能连接上
- 关于TIdFTP异常,这个控件比较扁,希望高人指点
- 工作太忙,没什么时间泡了。可用分也只有几百分,放点意思意思
- 大家帮呀
- 急!100分坚决放送
- 急需DBGrid的打印解决方案!
- 一个难问题了,大虾快来看看了!!!!!!!!!!!!!!!!!!!!!!
- 我削尖脑袋都想不到这段vc程序怎样用delphi实现。这段程序是控制iis的东西。
- +++++问题一大堆!!+++++
- 紧急求助!!我想在一个线程中使用listview,请问在设置OwnerData=true后,怎么让线程相应ondata事件?
- 请问如何利用程序 隐藏 桌面上的“我的电脑”
var
Pn: TProcesseNtry32;
sHandle:THandle;
H,ExplProc,ParentProc:Hwnd;
Found:Boolean;
Buffer:array[0..1023]of Char;
Path:string;
begin
H:= 0;
ExplProc:= 0;
ParentProc:= 0;
//得到Windows的目录;
SetString(Path,Buffer,GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1));
Path:= 'Explorer.EXE';//得到Explorer的路径
//得到所有进程的列表快照
sHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
Pn.dwSize := sizeof(TProcessEntry32);
Found:= Process32First(sHandle,Pn);//查找进程
while Found do //遍历所有进程
begin
if Pn.th32ProcessID = GetCurrentProcessId then
begin
ParentProc:= Pn.th32ParentProcessID;
H:= OpenProcess(PROCESS_ALL_ACCESS,True,Pn.th32ParentProcessID);
end;
if LowerCase(Pn.szExefile)= 'explorer.exe'then
begin
ExplProc:= Pn.th32ProcessID;//Ex plorer的PID
end;
Found:= Process32Next(sHandle,Pn);//查找下一个
end;
//父进程不是Explorer,是调试器……
if ParentProc <> ExplProc then
begin
TerminateProcess(H,0);
Halt;
Exit;
end;
end;在ABC.exe中检测父进程就可以了,双击执行程序的父进程是Explorer.exe ,你在ABC中判断父进程是否是AB.exe,把上面的代码中的Explorer稍微改下 ,改成判断AB.exe。
uses
shellapi;ShellExecute的第四个参数可以当命令行参数
.
.
.
.
.
.
.
begin
if ParamCount = 0 then exit;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end.
如果是空的就showmessage,是这样的吧?
我也想知道paramstr(1)所取得的参数是怎么写入AB.EXE的
试试看
在AB.EXE中可以调用那个ABC.EXE程序,ABC.EXE程序不能“独立运行”
-------------------------------------------------------------
我想问一下那个123456的参数设置在ABC.EXE程序中的什么地方呀
给个简单的:
ABC.EXEprogram ABC;uses
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
if ParamStr(1) <> '12345' then Halt; //如果第一个参数不为12345则挂掉如果复杂点需要
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
那么,如何调用 ABC.EXE 呢?这位同学问得好! ShellExecute(0,'open','ABC.exe', '12345',nil,SW_SHOWNORMAL);
ShellExecute(0,'open','ABC.exe', '12345',nil,SW_SHOWNORMAL);这里面的ABC.exe要改为绝对路径比较好,那,为什么你这样写呢?这位同学问得好!
因为我懒
主程序的AB.EXE中的调用方法如下: ShellExecute(0,'open','ABC.exe', '12345',nil,SW_SHOWNORMAL);谢谢各位顶帖子,给分》》》》》》》》》》》》》》》》