[巨难]我快疯了!!!!若能解决,另开贴送100分!!! (20分)

  • 主题发起人 主题发起人 07idea
  • 开始时间 开始时间
yzhshi,你的QQ多少?我的是68225687,可以加我吗?我认为这样讨论较方便!
=====
其实我最上面贴的那段代码在 98下是完全奏效的。可恨的NT啊。。。 ======
在98真的可以码?不管鼠标、键盘怎么动都不会影响吗?只有重开机才行吗?
如果是就太好了。

但,在2000下真的没有办法吗?
 
TO:yzhshi
我在98下试了,果然能达到我要的效果。但是,在win2000下不能吗?
 
一个要求画面变暗的帖子里一个高手的方法。。
改了改 黑了。。。。
你在做个Form放到最上面 拦截一切消息 特别是Ctrl+Alt+Del
由于太黑了。。我没试

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
procedure DarkScreen;
procedure RepaintScreen;
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;

implementation

{$R *.dfm}


procedure DarkScreen;
const
bMask: array [0..15] of Byte = ( $33, 0, $CC, 0, $33, 0,
$CC, 0, $33, 0, $CC, 0, $33, 0, $CC, 0);
var
Bitmap: HBITMAP;
Pattern: HBRUSH;
DCScreen: HDC;
OldPattern: HGDIOBJ;
begin

Bitmap := CreateBitmap(1, 1, 1, 1, @bMask);
Pattern := CreatePatternBrush(Bitmap);
DCScreen := GetDC(0);
OldPattern := SelectObject(DCScreen, Pattern);
BitBlt(DCScreen, 0, 0, Screen.Width, Screen.Height, 0, 0, 0, $A000C9);
SelectObject(DCScreen, OldPattern);
ReleaseDC(0, DCScreen);
DeleteObject(Bitmap);
DeleteObject(Pattern);
end;



procedure RepaintScreen;
var
r : TRect;
begin

r := Screen.DesktopRect;
InvalidateRect(0, @r, true);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin

DarkScreen;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin

RepaintScreen;
end;


end.
 
什么啊,这不是我要的,我不要通过叠加的画面来黑屏,最好能让显示器关闭电源。
 
没人知道吗?
 
高手都到哪去了。
 
你可让一个全黑的大窗体出现在最前面,然后屏蔽掉 任务栏,开始菜单,alt+tab
并设置时间让它自己重启或你给用户另一个窗口操作
 
你说的我会做,可是,只要系统一关机,什么程序都会被关闭啊,那个黑色的窗口也会被关闭啊,然后还会显示出关机的窗口,根本不能达到我要的效果。。
 
看来还是没人会,不过我找到了别的方法,就是隐藏关机消息。
 

Similar threads

D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部