AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Windows 8

Ein Thema von kuba · begonnen am 7. Feb 2012 · letzter Beitrag vom 31. Aug 2012
Antwort Antwort
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Windows 8

  Alt 9. Feb 2012, 13:08
Nebenbei:
Wie wäre es einfach auf einen eigenen Desktop zu schalten? Dann kommt der Benutzer schlicht an gar nichts heran außer dort laufende Programme (von dir gestartet), da kann er die Tastatur an die Wand werfen oder drauf rumbeißen . Das Prinzip nutzen ja auch die UAC und der Dienstmanager.
Da braucht man dann auch nicht die ganzen Hooks usw. [/QUOTE]

Guter Tip, so ein Konzept wollte ich schon mal angehen. Hab es aber noch nicht getan. Hatte mir überlegt, daß ja zuerst ein User angemeldet werden muss. Und weil der ja sowieso einen Desktop hat wäre es doch am einfachsten diesen einzuschränken.

Aber das schaue ich mir nochmal genau an, vielleicht ist das gar nicht mal schlecht und vielleicht auch in das vorhandene Konzept zu integrieren.

Übrigens von wg. Hooks, könnte es sein daß so ein Hook eine hohe CPU Auslastung mit sich bringt ??

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Windows 8

  Alt 9. Feb 2012, 13:25
Ein erster einfacher Ansatz: http://www.michael-puff.de/Programmi...hDesktop.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.361 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows 8

  Alt 20. Mär 2012, 21:24
Dein Code funktioniert zwar, aber nur in dem Testprogramm.

Füge ihn mal in eine normale Anwendung ein und starte diese Prozedur über einen Button.

Verwende aber besser diese Variante, denn bei deiner wirst du nicht froh werden.
Delphi-Quellcode:
procedure BaitAndSwitchDesktop;
var
  OldDesk, NewDesk: HDESK;
begin
  OldDesk := GetThreadDesktop(GetCurrentThreadID);
  NewDesk := CreateDesktop(PChar('Foobar'), nil, nil, 0, DESKTOP_CREATEWINDOW or
    DESKTOP_SWITCHDESKTOP or DESKTOP_CREATEMENU, nil);
  if NewDesk <> 0 then
  begin
    try
      if SetThreadDesktop(NewDesk) and SwitchDesktop(NewDesk) then
        MessageBox(0, 'Here I am', 'Foobar Desktop', MB_ICONINFORMATION)
      else
        RaiseLastOSError;
    finally
      SwitchDesktop(OldDesk);
      SetThreadDesktop(OldDesk);
      CloseDesktop(NewDesk);
    end;
  end else
    RaiseLastOSError;
end;
Erstmal sollte man sicher sein, daß man keine wichtigen und ungespeicherten Daten offen hat.
Dann führe man deine Prozedur aus und fühle sich in dem neuen Desktop eingesperrt.
Strg+Alt+Entf funktioniert zwar, aber den Taskmanager kann man vergessen, denn dieser öffnet sich nur im Hauptdesktop und man sieht ihn daher garnicht.

Denn SetThreadDesktop funktioniert nur, wenn noch kein Fenster in dem Thread erstellt, bzw. wenn noch keine Messagequeue für diesen Thread initialisiert wurde.
MessageQueues sind an je einen Thread gebunden und Fenster sind an Desktops gebunden ... ein Wechsel ist nicht möglich.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.948 Beiträge
 
Delphi 12 Athens
 
#4

AW: Windows 8

  Alt 9. Feb 2012, 13:30
Übrigens von wg. Hooks, könnte es sein daß so ein Hook eine hohe CPU Auslastung mit sich bringt ??
Nur wenn er falsch programmiert ist.
Nämlich dann, wenn er manchmal dafür sorgt, dass Schleifen entstehen, indem selbst wieder Tasten ausgelöst werden oder sowas.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz