casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
請教各位大大: 因為程式中需要禁止使用 Alt+F4 和 Alt+Tab,
手邊找到的資料是王國榮先生的大作,
Visual Basic 6.0 與 Windows API 講座(旗標出版),
裡面介紹使用 KeybHook.dll ,
應該可以達成我的要求,
但是由於範例是 VB 語法,
我試了很久仍無法翻成 BCB 語法,
想請教一下各位,
書中 VB 範例如下:
private Sub Form_Load()
'掛上視窗程序
prevWndProc=GetWindowLong(Me.hWnd,GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
'掛上 KeyboardHook_HookProc 函數
SetKeyboardHook Me.hWnd, WM_USER
End Sub private Sub Form_Unload(Cancel As Integer)
'卸下 KeyboardHook_HookProc 函數
ReleaseKeyboardHook
'卸下 視窗程序
SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
End Sub Function WndProc(ByVal hWnd As Long, ByVal Msg As Long,
ByVal wParam As Long, ByVal lParam As Long) As Long If Msg=WM_USER Then
Form1.List1.AddItem "wParam="&wParam&",lParam"&Hex(lParam)
Form1.List1.ListIndex=Form1.List1.NewIndex;
End If
WndProc=CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
End Function
謝謝! --------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
|
cashyy
高階會員
發表:117 回覆:322 積分:212 註冊:2004-04-30
發送簡訊給我
|
引言:
請教各位大大: 因為程式中需要禁止使用 Alt F4 和 Alt Tab,
手邊找到的資料是王國榮先生的大作,
Visual Basic 6.0 與 Windows API 講座(旗標出版),
裡面介紹使用 KeybHook.dll ,
應該可以達成我的要求,
但是由於範例是 VB 語法,
我試了很久仍無法翻成 BCB 語法,
想請教一下各位,
書中 VB 範例如下:
--------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
您好!您是否要找個程式是用bcb寫的!功能是禁止使用 Alt F4
這裡有個:讓預設關閉功能組合鍵失效!
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=1402
|
casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
cashyy 大大: 我點選進入您所說的頁次
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=1402
但是網頁訊息告訴我說〝沒權進入 〞,
這....
我該如何做呢? --------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
|
GeorgeKu
中階會員
發表:1 回覆:120 積分:74 註冊:2004-10-13
發送簡訊給我
|
casper97, 你可以使用RegisterHotKey的方式讓那ALT-TAB跟ALT-F4失效
RegisterHotKey(hwnd,1,MOD_ALT,VK_TAB);
RegisterHotKey(hwnd,2,MOD_ALT,VK_F4);
|
casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
GeorgeKu 大大: 感謝您的回應,
我試過您的方式,
發現在 Win98 中只可以檔掉 Alt ┼ F4 、而 Alt ┼ Tab 卻仍有作用,
但在 Win2k 中就可以都檔掉,是否還需加些什麼動作才能夠都能檔掉 < >
再請問一下,如果是 >
謝謝!!< > 以下是我的程式碼:
< class="code">
//--------------------------------------------------------------------
#include
#pragma hdrstop #include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
RegisterHotKey(Form1->Handle,1,MOD_ALT,VK_TAB);
RegisterHotKey(Form1->Handle,2,MOD_ALT,VK_F4);
}
//--------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Form1->Handle,1);
UnregisterHotKey(Form1->Handle,2);
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Close();
}
//--------------------------------------------------------------------
--------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
|
cashyy
高階會員
發表:117 回覆:322 積分:212 註冊:2004-04-30
發送簡訊給我
|
引言:
GeorgeKu 大大: 感謝您的回應,
我試過您的方式,
發現在 Win98 中只可以檔掉 Alt ┼ F4 、而 Alt ┼ Tab 卻仍有作用,
但在 Win2k 中就可以都檔掉,是否還需加些什麼動作才能夠都能檔掉 < >
再請問一下,如果是 >
謝謝!!< > 以下是我的程式碼:
< class="code">
//--------------------------------------------------------------------
#include
#pragma hdrstop #include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
RegisterHotKey(Form1->Handle,1,MOD_ALT,VK_TAB);
RegisterHotKey(Form1->Handle,2,MOD_ALT,VK_F4);
}
//--------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Form1->Handle,1);
UnregisterHotKey(Form1->Handle,2);
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Close();
}
//--------------------------------------------------------------------
--------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
casper97您好!
檔案不知道要傳去那裡!(沒空間上傳)
所以還是貼上程式碼給您!
< class="code">
//---------------------------------------------------------------------------
//目的:將預設關閉功能組合鍵失效
//---------------------------------------------------------------------------
#include
#pragma hdrstop #include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
//將預設關閉功能組合鍵失效
CanClose = !(::GetKeyState(VK_MENU) && ::GetKeyState(VK_F4));
}
//--------------------------------------------------------------------------- //.h
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TStaticText *StaticText1;
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
|
casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
GeorgeKu 大大: 感謝您的幫忙,您回應的程式碼我已試過,
可以成功的檔掉 Alt ┼ F4
但是其他的功能鍵
|
cashyy
高階會員
發表:117 回覆:322 積分:212 註冊:2004-04-30
發送簡訊給我
|
引言:
GeorgeKu 大大: 感謝您的幫忙,您回應的程式碼我已試過,
可以成功的檔掉 Alt ┼ F4
但是其他的功能鍵 >>< face="Verdana, Arial, Helvetica"> 您好!我是cashyy啦!
請參考這一篇,裡面有虛擬按鍵對照表
|
casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
cashyy 大大: 〝真歹勢 〞!!
程式不會寫就算了,
連人都會搞錯,
真是..... < > 您的建議我會找時間試試!
萬分感謝! < > --------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
|
GeorgeKu
中階會員
發表:1 回覆:120 積分:74 註冊:2004-10-13
發送簡訊給我
|
casper97, 手頭上的2部電腦,一個是裝XP,另一個是2000,所以沒辦法測試在98的情況下,至於在2000及XP要控制CTRL ALT DEL,這個部分看起來挺麻煩的,在討論區裡可以找到相關的資料.
|
casper97
一般會員
發表:13 回覆:18 積分:11 註冊:2004-12-30
發送簡訊給我
|
感謝 GeorgeKu 和 cashyy 大大: 我的問題雖然沒完全解決,
但是已有解決的方向,
對於兩位大大的幫忙,
表示萬分感激,
有機會再向兩位請益。 --------------------------------------
人類因夢想而偉大,但也要吃飯才會長大!
|