一旦按了鍵盤的Alt+F1(自定義)就要把我的程序置為當前窗口???(大唐电信等高手進來看下)(50分)

  • 主题发起人 主题发起人 myveremy
  • 开始时间 开始时间
M

myveremy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure WMHotKey(var Message: TWMHOTKEY); message WM_HOTKEY;
....
procedure TForm1.WMHotKey(var Message: TWMHOTKEY);
var
H: THandle;
begin
H := FindWindow(nil, 'form1');
if H > 0 then
begin
SendMessage(H, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(H);
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnregisterHotKey(Handle, GlobalAddAtom('hotkey'));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle:=bsNone; ///////// 全屏
SetBounds(0,0,Screen.Width,Screen.Height); /////////

RegisterHotKey(Handle, GlobalAddAtom('hotkey'), mod_alt, vk_F1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.BorderStyle:=bssizeable; ////////////////
form1.WindowState:=wsmaximized; //////////////
end;

上面的方法在沒有按'按扭'前都可以,在我按了'按扭'后,
我切換到其它窗口,這時按'ALT+F1'就切換不回來了 ??????????
 
这个问题太简单了,但是楼主指定人回答,我就帮不上忙了,沙发
 
fly_bird8:
不是指定誰答的,知道的都可以答,主要是解決問題.
 
在我按了'按扭'后,
我切換到其它窗口,這時按'ALT+F1'就切換不回來了(handle找不到,不知咋回事?????)
 
我不是大唐的,我也不是Alt+F1
我的是按F7,
热键问题,答案一大堆呢。搜索一下吧
 
procedure TForm1.WMHotKey(var Message: TWMHOTKEY);
begin
SendMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(Handle);
end;
可以直接取得handle干嘛还findwindow?
设置BorderStyle后会RecreateWnd,可能与这有关
 
楼主别乱说,我不是什么高手。
我实验了一下,好象是你执行了下面操作后
form1.BorderStyle:=bssizeable;
窗体会被重建(你可以对比执行前后的窗口句柄,它们并不一样)
原来的热键就失效了
只好在重新注册一个热键

procedure TForm1.WMHotKey(var Message: TWMHOTKEY);
begin
SendMessage(form1.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(form1.Handle);
windows.SetParent(application.Handle,GetdesktopWindow);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle:=bsNone; ///////// 全屏
SetBounds(0,0,Screen.Width,Screen.Height); /////////
RegisterHotKey(Handle,GlobalAddAtom('hotkey'), mod_alt, vk_F1);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnregisterHotKey(Handle, GlobalFindAtom('hotkey'));
GlobalDeleteAtom(GlobalFindAtom('hotkey'));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.BorderStyle:=bssizeable; ////////////////
form1.WindowState:=wsmaximized;
UnregisterHotKey(Handle, GlobalFindAtom('hotkey'));
GlobalDeleteAtom(GlobalFindAtom('hotkey'));

RegisterHotKey(Handle, GlobalAddAtom('hotkey'), mod_alt, vk_F1);

end;
 
多人接受答案了。
 
后退
顶部