急!积!!极!!!如何将一运行程序隐藏(50分)

  • 主题发起人 主题发起人 autumn
  • 开始时间 开始时间
A

autumn

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个用delphi写的exe文件,我可否写另一个exe,将它隐藏,展示.并且<br>让它(第一个exe)不出现在任务栏中.<br>求操作步骤,和代码.
 
可以发个消息给第一个exe,由第一个exe自己来干隐藏的活
 
Pipi:<br>&nbsp; &nbsp; 我该发什么消息呢?
 
要是2个exe都是自己写的就好办,2个exe 都 RegisterWindowMessage 一个相同的<br>消息,然后第2个程序 PostMessage(HWND_BROADCAST,这个注册的消息,0,0)<br>第1个exe接到这个消息就把自己隐藏
 
呵呵,问题就在于这个exe不是我写的.
 
感兴趣,那么如果第一个exe不是自己做的呢?
 
看这里:<br>&nbsp; &nbsp; ShellExecute(0,'Open','ifrun60','logon kcssys/manager@oracle',nil,SW_HIDE)<br>这里我为了解决Oracle FormBuilder运行时不会隐藏起来的问题而写的,执行<br>后,被执行的程序处于隐藏状态,在任务栏中也不会出现,合你的意吗?<br><br>它是原型是:<br>HINSTANCE ShellExecute(<br><br>&nbsp; &nbsp; HWND hwnd, // handle to parent window<br>&nbsp; &nbsp; LPCTSTR lpOperation, // pointer to string that specifies operation to perform<br>&nbsp; &nbsp; LPCTSTR lpFile, // pointer to filename or folder name string<br>&nbsp; &nbsp; LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters <br>&nbsp; &nbsp; LPCTSTR lpDirectory, // pointer to string that specifies default directory<br>&nbsp; &nbsp; INT nShowCmd // whether file is shown when opened<br>&nbsp; &nbsp;);
 
procedure TForm1.Button1Click(Sender: TObject);<br>const Trigger:boolean=True;<br>begin<br>&nbsp; if Trigger then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowWindow(FindWindow(nil,'Form1'),SW_HIDE); &nbsp; &nbsp;//'Form1' 窗体的Caption<br>&nbsp; &nbsp; ShowWindow(FindWindow(nil,'Project2'),SW_HIDE); //'Project2' 程序在任务拦显示的Caption.<br>&nbsp; &nbsp; Trigger:=False;<br>&nbsp; end else begin<br>&nbsp; &nbsp; ShowWindow(FindWindow(nil,'Form1'),SW_SHOWNORMAL);<br>&nbsp; &nbsp; ShowWindow(FindWindow(nil,'Project2'),SW_SHOWNORMAL);<br>&nbsp; &nbsp; Trigger:=True;<br>&nbsp; end;<br>end;<br><br><br>如果你想在CTRL+ALT+DEL都看布道,使用RegisterServiceProcess <br>
 
补充一下:<br>&nbsp; &nbsp; ShellExecute(0,'Open','ifrun60','logon kcssys/manager@oracle',nil,SW_HIDE)<br>第一个参数是句柄,第二个是打开方式,第三个是执行的程序名,第四个是执行 <br>的参数,第四个是指定默认目录,第五个是执行方式,其中SW_HIDE是以隐藏方式,<br>SW_SHOW是以显示方式执行。
 
沈前卫:<br>&nbsp; &nbsp; 当exe在ShowWindow(FindWindow(nil,'Project2'),SW_HIDE); 后<br>一段时间因为某些消息触发showmessage的时候,就在屏幕中间突然弹出一个<br>showmessage('adfasf')之类的东西,呵呵,这样就穿帮了。我想将showmessage<br>都屏蔽。<br>Sachow:<br>&nbsp; &nbsp; 让我尝尝你的哪个能不能解决问题...
 
sachow:<br>&nbsp; &nbsp; 好象不行....
 
还是没有解决messageBox弹出的问题。
 
(C++Builder Code:)<br>Menu-&gt;Project-&gt;Show Source<br><br>Application-&gt;ShowMainForm = false or true; (Hide or Show)
 
你的程序如果只运行在nt下,我告诉你一个办法,无论如何不出现窗口(象services)
 
Pipi:<br>&nbsp; &nbsp; win98
 
隐藏window用<br>&nbsp; ShowWindow(handle,SW_HIDE);<br>ctl_alt_del也看不见用<br>&nbsp; RegisterServiceProcess(GetCurrentProcessID,1);<br><br>exe2想通知exe1可以考虑exe1截获<br>&nbsp; WM_COPYDATA消息,此消息描述如下<br>wParam = (WPARAM) (HWND) hwnd;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // handle of sending window <br>lParam = (LPARAM) (PCOPYDATASTRUCT) pcds;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// pointer to structure with data <br>Copydatastruct如下<br><br>typedef struct tagCOPYDATASTRUCT { &nbsp;// cds &nbsp;<br>&nbsp; &nbsp; DWORD dwData; <br>&nbsp; &nbsp; DWORD cbData; <br>&nbsp; &nbsp; PVOID lpData; <br>} COPYDATASTRUCT; <br><br>exe2可以sendmessage发个WM_COPYDATA过去,通过dwData传递信息<br>当然,要知道exe1的handle<br>可惜,因为第一个exe不是您写的,就只能由exe2来做隐藏工作了<br><br>屏蔽showmessage就真的不知道该怎么做,showmessage到是会触发一个<br>WM_CANCELMODE消息,可惜,这是在对话框都show出来以后才传给进程的<br>而且,就算show前真的能有一个消息来到,因为它们是两个不同的exe<br>我不知道一个exe该怎么才能监视到另一个exe的全部消息,因为getmessage<br>和peekmessage都不行,sigh....太菜了,请大虾指教<br>
 
刚才试了一下,showmessage的时候,父窗口大概顺序收到以下消息<br>WM_PARENTNOTIFY<br>WM_CANCELMODE<br>WM_ENABLE<br>sigh...还是没办法<br>
 
后退
顶部