帮我想想办法.(50分)

  • 主题发起人 主题发起人 zikao419
  • 开始时间 开始时间
Z

zikao419

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个用C写的程序但是没有源代码,其作用是从硬件取数据并显示的.现在我想只让其取数不让显示数据,如何办到?(该C程序最小化后无法实现取数功能)
 
没有源代码就只能反编译了。
要这样去破解软件是很费劲的,除非很有商业价值。
 
hehe. so that.
 
找到用C编写这个程序的家伙,拷问他为什么最小化就不能提数了
 
我刚才想起来了以前学VB的时候见过一个捆绑程序窗口的程序.
我看了它的原理,然后用Delphi来实现.他可以捆绑程序的界面,当捆绑的程序最小化的时候,
被捆绑的程序也会在桌面上消失,试验证明被捆绑的程序没有接收到程序最小化的消息.
不知道楼主的C程序"最小化就不能提数"的原理,如果它是靠截获最小化消息来实现的话,这种方法是有效的,代码如下:
var
h: HWnd;
//全局变量,保存被捆绑的程序的句柄.
h := FindWindow(nil, '被捆绑的程序的标题');
if h <> 0 then
begin
Windows.SetParent(h, Panel1.Handle);
Windows.SetWindowPos(h, 0, 0, 0, Panel1.Width, Panel1.Height, 0);
end;

procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Windows.SetParent(h, 0);
end;

//哈哈哈哈!原来VB还是有点用的.
 
我也不知道为什么最小化后不能从硬件取数,我的本意是,既要能取数还要把该窗体隐藏了.目的是不让取到的数据显露在外面.
 
试过上面的代码对你那C程序有效没?
 
ShellExecute(handle, &quot;open&quot;, path_to_folder, NULL, NULL, SW_HIDE);
用shell隐藏调用,不知道行不行
 
直接将窗体位置移到屏幕之外不就成了?
 
楼主失踪了......
 
我没有失踪,啊.我在看大家得发言呢.
我有了一个新的办法,将这个C的程序启动了,然后再启动一覆盖在他上面的窗体,这样数据不就看不到了吗。不过又有一个问题,如何让被覆盖在下面的C程序窗体具有焦点呢?
 
如果仅仅是覆盖,获得焦点的方法和不覆盖一样啊
var
h: HWnd;
begin
h := FindWindow(nil, '大富翁论坛');
if h <> 0 then
SetForegroundWindow(h);
end;

另外,我觉得最好的办法还是把那个窗体扔出显示窗口以外:
var
h: HWnd;
begin
h := FindWindow(nil, '大富翁论坛');
if h <> 0 then
MoveWindow(h,-100,-100,10,10,true);
end;
 
to: hs-kill [h3][/h3]我觉得最好的办法还是把那个窗体扔出显示窗口以外
你的这种办法也可以,但是它必须显示窗体右下角,这里有是显示检测的过程的,必须用的.
[h2][blue]另外特别提示 [/blue] [/h2] 这个程序是MSDOS下运行的,不好意思大家谁还有好的方法不妨讨论一下,身边没有环境,过几天作实验,成功了我会给大家分分的。谢谢大家给小弟的帮助。
 
后退
顶部