System blockieren



  • @Luckie

    ... das es unter Win2k nicht geht?

    Geht nicht... gibt es nicht und ist zudem falsch !!! 🕶
    Der Programmieraufwand um das zu realisieren ist nur um einiges höher als unter Win9x 😮

    MfG veganza



  • es soll auch garnicht für Win2ks sein, ich habs nur für mich geschrieben, bzw. bin noch dabei.

    Also ich hab jetzt folgendes:

    - Enter + Escape werden ignoriert
    - Strg-Alt-Entf und Alt-Tab werden ignoriert

    Ich brauch noch und komm nicht weiter:

    - Alt-F4 ignorieren. Hab den Code dazu aber kein OnSysCommand 😞
    - Nur meinem Fenster den Focus gewähren, egal ob sich eins öffnet etc.
    - Eintrag in Auto-Start

    Kann mir bitte jemand helfen?

    [ Dieser Beitrag wurde am 04.10.2002 um 07:46 Uhr von Polykarp editiert. ]



  • Würd mich freuen, wenn du hier den Code für STRG+ALT+ENTF und ALT+TAB postest..

    Bezüglich Autostart kannste am besten in die Registry nen Eintrag machen...
    Wie man in die Reg nen Wert schreibt, steht in der FAQ..musst eben reinschauen..
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    Das sollte der Schlüssel sein, in dem du die Programmexe (den pfad) posten musst...



  • Cool, danke.
    Hier der Code, laut MSDN nicht empfehlenswert aber es tut seinen Dienst:

    SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0 );
    


  • @Polykarp

    Hat Dein Dialog eine About-Box / CAboutDlg ???

    Wenn ja, dann hast Du bereits eine OnSysCommand und übersiehst sie wahrscheinlich nur.

    Wenn nein... über Klassenassistent hinzufügen, wenn Du die entsprechende Message nicht in der Auswahl hat, könnte es daran liegen, daß der Filter für die Messages auf Dialog steht !!! Du brauchst dazu aber "Fentser". Ändern kann man das im Klassenassisten ganz rechter Reiter Klassen-Info unten Links das DropDown Filter für Nachrichten.

    Damit Deine Anwendung im Vordergrund bleibt... folgenden Code in die OnInitDialog():

    SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    

    Hoffe das hilft Dir weiter...

    MfG veganza

    [ Dieser Beitrag wurde am 04.10.2002 um 09:33 Uhr von veganza editiert. ]



  • Danke Veganza, F4 reagiert nicht mehr.

    So das Fenster bleibt immer inaktiv im Vordergrund, also ich muss es immer erst anklicken bevor es aktiviert wird und ich daran arbeiten kann.

    Das bringt mir aber nichts, das Fenster muss immer aktiviert bleiben und der User darf mit keinem anderen Fenster arbeiten... wie geht das?

    Also man soll nur mit meinem Fenster arbeiten können.



  • @Polykarp

    So spontan fallen mir da 2 Möglichkeiten ein... die ich aber noch nicht probiert habe !!!

    1. WM_KILLFOCUS sollte eigentlich kurz bevor der Dialog den Focus verliert gesendet werden, Du mußt dann hier entsprechend reagieren.

    2. Ich glaube mich zu erinnern, daß es eine WM_ACTIVATEAPP Message o.ä. gibt, die (logisch) TRUE zurückliefert wenn die Applikation den Focus hat.

    Bei beiden Möglichkeiten kannst Du dann per SetForegroundWindow() Deinen Dialog wieder den Focus zuweisen können, sofern WM_KILLFOCUS bzw. das bActive BOOL FALSE ist.

    Hoffe ich zumindestens...

    MfG veganza

    [ Dieser Beitrag wurde am 04.10.2002 um 10:27 Uhr von veganza editiert. ]



  • Hi Veganza,

    es klappt leider keine von beiden Möglichkeiten. Mein Code für WM_KILLFOCUS:

    SetForegroundWindow();
    

    Für WM_ACTIVATEAPP

    if(bActive == FALSE) { SetForegroundWindow(); }
    

    Keine Fehler, aber ergibt nicht das gewünschte Resultat



  • @Polykarp

    Nachdem ich es auch ausprobiert habe... bin ich etwas ratlos 😕 😕 😕

    @ALL

    Wer hat noch eine Idee wie man das realisieren kann ???

    MfG veganza



  • Keiner ne Idee?

    schade



  • @Polykarp

    So funktioniert es 😉 zumindestens bekommt man kein anderes Fenster mehr in den Vordergrund... der Focus ist allerdings bei jedem 2. Klick nicht mehr auf dem Dialog. Beim nächsten Klick (egal wohin) kommt er dann aber wieder 😃

    DWORD ForeGroundID = GetWindowThreadProcessId(::GetForegroundWindow(),NULL);
    DWORD CurrentID   = GetCurrentThreadId();
    
    AttachThreadInput ( ForeGroundID, CurrentID, TRUE );
    
    SetForegroundWindow();
    SetFocus(); 
    
    AttachThreadInput ( ForeGroundID, CurrentID, FALSE );
    

    Hoffe das hilft Dir weiter...

    MfG veganza

    P.S. Noch vergessen zu sagen, daß der Code in die OnActiveApp() gehört, wenn bActive FALSE ist 😉

    [ Dieser Beitrag wurde am 05.10.2002 um 11:23 Uhr von veganza editiert. ]


Anmelden zum Antworten