我想在自己程序运行时封锁整个显示器,详细请看!(100分)

  • 主题发起人 主题发起人 wntiger
  • 开始时间 开始时间
W

wntiger

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在我的数据采集程序运行时不允许用户可以运行执行其它屏幕操作,
即是封锁控制台和屏幕。我看北进润非的编程器就实现了这个功能,还有
微软MCSE考试的软件也是这样,不允许用户执行在这个程序之外的操作。
我试验了 SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
这个函数来提高程序的优先级,但没有用处,到不到封锁屏幕的目的。

哪位朋友能提供个思路,赠送100分。并致以诚挚感谢!
 
禁止所有系统热键(如 Win/Alt+Tab等),然后全屏运行你的程序!
www.iligia.com
 
能不能让系统认为你的窗口就是桌面
 
用程序来限制技术上可以达到,但是难度较大.如果你的机器不是NT,2000,XP而是98,Me的话,
有一个简单的办法:把windows目录下的System.ini里的Shell=explorer.exe中的explorer.exe
替换成你的程序(可以包含路径),最好在你的程序中加入关机,重启和修改System.ini的功能,
方便维护.
 
但我想直接编程会好维护一些,比如北京润非的编程器就实现了。
 
to wntiger
难道我的方法不行吗?
 
ligia 谢谢,你的方法我正在试验,有结果我告诉你。应该是合适的方法。
 
以下方法就可以解决问题:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
HookHandle:hHook = 0;

implementation

{$R *.DFM}

function Mouse(code:integer;wParam, lParam: Longint):longint;stdcall;
begin
Result:=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
HookHandle:=setwindowshookex(wh_mouse,mouse,hinstance,0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
UnhookWindowsHookEx(HookHandle);
end;

end.
 
后退
顶部