Minimieren und Schließen Deaktivieren
-
Weiss das keiner oder habt ihr keine Lust?
Ich brauch das!
Bitte, Bitte, Bitte![ Dieser Beitrag wurde am 07.04.2003 um 21:13 Uhr von quizzmaster editiert. ]
-
Leider ist mein eigens zur Lösung deines Problems abkommandierten Expertenteam noch zu keiner Lösung gelangt. Die 8h sind hald doch relativ knapp. Ich werde mich selbstverständlich sofort darum kümmern und den faulpelzen in den Hintern treten!
Aber wirklich... dich 8h warten zu lassen *kopfschüttel*...
nu aber mal sarkasmus bei seite...
Normalerweise werden solche drängler mal kurz aus die Ersatzbank geschickt indem der thread vorübergehend geschlossen wird... versteh dies als eine Warnung. Lass den Leuten auch Zeit dein Problem zu analysieren. Ist der Thread nicht mehr auf der ersten Seite besteht frühstens eine Notwendigkeit den Thread wieder nach oben zu schieben.
-junix
-
Ok habe verstanden.
Ich habe es auch mitlerweile geschafft, dass sich das prog über die taskleiste legt, aber die Start Taste funzt noch. Kann man die irgendwie abschalten?
-
ALT+F4 verhintern:
in FormCloseAction = caNone;
Tasten sperren
im Header
private: static HHOOK ghhookKB; static void __stdcall SetHook(void); static void __stdcall RemoveHook(void); static LRESULT CALLBACK CheckKey(int, WORD,LONG);
im Code
//--------------------------------------------------------------------------- __fastcall TForm_Main::TForm_Main(TComponent* Owner) : TForm(Owner) { SetHook(); } //--------------------------------------------------------------------------- void __stdcall TForm_Main::SetHook(void) { ghhookKB = SetWindowsHookEx(WH_KEYBOARD_LL, (int(__stdcall*)())CheckKey, HInstance, NULL); } //--------------------------------------------------------------------------- void __stdcall TForm_Main::RemoveHook(void) { UnhookWindowsHookEx(ghhookKB); } //--------------------------------------------------------------------------- LRESULT CALLBACK TForm_Main::CheckKey(int nCode, WORD wParam, LONG lParam) { bool bEatKeyStroke = false; if (nCode == HC_ACTION) { switch (wParam) { case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; bEatKeyStroke = ((p->vkCode == VK_LWIN)) || ((p->vkCode == VK_RWIN)) || ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)); break; } } return(bEatKeyStroke ? 1 : CallNextHookEx(ghhookKB, nCode, wParam, lParam)); }
-
Also der gibt mir nen Linker Error.
[Linker Error] Unresolved external 'TForm1::ghhookKB' referenced from C:\blabla
Was mach ich falsch?
[ Dieser Beitrag wurde am 08.04.2003 um 14:19 Uhr von quizzmaster editiert. ]
-
Lass mal die statics weg.
-
Kann das leider net prüfen hab das aber schon mal probiert.
Das funzt auch net. leider...
Da gibts noch mehr Fehler
-
Na klar. Kann auch ned. <VergissEs> hat falschen Code gepostet. So gehts:
// Header: //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- HHOOK ghhookKB; LRESULT CALLBACK CheckKey(int, WORD,LONG); //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall FormClose(TObject *Sender, TCloseAction &Action); private: // Anwender-Deklarationen protected: void __stdcall SetHook(void); void __stdcall RemoveHook(void); public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif // CPP //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { SetHook(); } //--------------------------------------------------------------------------- void __stdcall TForm1::SetHook(void) { ghhookKB = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)CheckKey, HInstance, NULL); } //--------------------------------------------------------------------------- void __stdcall TForm1::RemoveHook(void) { UnhookWindowsHookEx(ghhookKB); } //--------------------------------------------------------------------------- LRESULT CALLBACK CheckKey(int nCode, WORD wParam, LONG lParam) { bool bEatKeyStroke = false; if (nCode == HC_ACTION) { switch (wParam) { case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; bEatKeyStroke = ((p->vkCode == VK_LWIN)) || ((p->vkCode == VK_RWIN)) || ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)); break; } } return(bEatKeyStroke ? 1 : CallNextHookEx(ghhookKB, nCode, wParam, lParam)); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { RemoveHook(); } //---------------------------------------------------------------------------
-
Er compiliert es zwar aber da tut sich nix
Ich kann ALT+TAB und CTRL+ESC immernoch benutzen (WINTASTE auch)
-
Huups... hab grad in der MSDN nachgeschaut. Ist nur für Win NT/XP/2000 - der low level KeyboardHook.
-
Dass der ganze Schnodder auch in der FAQ steht (unter "Tasten") wisst ihr aber, oder?
-
Jetzt schon.
-
Ok thx ich brauchs auch für Win2k hab aber immoment nur WinMe und XP zur Hand ich prob das gleich ma aufm XP Rechner *g*
-
Es funzt fast perfekt, aber das prog is noch im Taskmanager.
Kann man das da irgendwie verbergen oder die Tasten kombination CTRL+ALT+ENTF deaktivieren?
-
Original erstellt von quizzmaster:
Kann man das da irgendwie verbergen oder die Tasten kombination CTRL+ALT+ENTF deaktivieren?Letzteres: Nein!
Ersteres: Ja. Stichwort: Dienst. Gibts 1000fach hier im Forum.
-
Ich hab das hier gefunden kann damit aber nix anfangen. Wo soll ich das hinpacken?
typedef DWORD (WINAPI *tdRegisterServiceProcess) (DWORD, DWORD) ;
HMODULE hLibrary ;
...
tdRegisterServiceProcess fnRegisterServiceProcess ;
hLibrary = LoadLibrary ("kernel32.dll") ;
fnRegisterServiceProcess =(tdRegisterServiceProcess) GetProcAddress(hLibrary, "RegisterServiceProcess") ;
fnRegisterServiceProcess (NULL, 1) ;
FreeLibrary (hLibrary) ;Nachtrag: Hat sich erübrigt, das geht nur unter Win9x
[ Dieser Beitrag wurde am 09.04.2003 um 18:15 Uhr von quizzmaster editiert. ]
-
OK. Dass ist nur für Win 9x funzt da aber perfekt.
Gibts sowas, wie das von WebFrizi, auch für Win9x?
-
Hat sich erledigt hab auf bytesandmore was gefunden.
[ Dieser Beitrag wurde am 09.04.2003 um 18:51 Uhr von quizzmaster editiert. ]