Treiber aktivieren/deaktivieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Re: Treiber aktivieren/deaktivieren

Beitrag von deify »

es ist zwar schule, aber eine ag in der ich an allen pcs die admin-rechte besitze, also auch kein problem (;

eine gina.dll schreiben will ich eigentlich nicht :D weil ich dazu einfach zu blöd bin ^^
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Re: Treiber aktivieren/deaktivieren

Beitrag von Helle »

Devcon wurde ja schon empfohlen (nutze ich selber auch); aus Jux habe ich mal getestet, ob der PS/2-Tastatur-Anschluss sich über den guten alten Port 64h (ach, waren die DOS-Zeiten schön...) deaktivieren lässt: Geht, getestet mit Win XP-Prof (32-Bit), Win Server 2003 (64-Bit) und Win 7 Ultimate (64-Bit).
Portzugriff wurde mit WinRing0 erhalten; habe ich eh aktiv. Details dazu und andere Möglichkeiten siehe in der Hardware & Elektronik-Abteilung.
Hier mein Test-Code:

Code: Alles auswählen

;- PS/2-Tastatur über Port 64h aus/einschalten
;- Nutzung der WinRing0-Dll´s (32-und 64-Bit). Copyright (c) 2007-2009 OpenLibSys.org. All rights reserved.
;- "Helle" Klaus Helbing, 18.09.2010, PB 4.51 (x86, x64)

SI.SYSTEM_INFO                                   ;Structure System_Info

#PROCESSOR_ARCHITECTURE_AMD64 = $9

GetSystemInfo_(@SI)

If OpenWindow(0, 0, 0, 250, 100, "Tastatur de/aktivieren", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
  ;ermitteln, ob 32- oder 64-Bit-Betriebssystem
  If SI\wProcessorArchitecture = #PROCESSOR_ARCHITECTURE_AMD64
    OS3264 = 1
  EndIf
  ;die entsprechende DLL öffnen
  If OS3264
    DLLOK = OpenLibrary(0, "WinRing0x64.dll")    ;64-Bit-Version laden
   Else
    DLLOK = OpenLibrary(0, "WinRing0.dll")       ;32-Bit-Version laden
  EndIf

  If DLLOK
    Prototype.i ProtoWinRing0_0()
    WR0_InitializeOls.ProtoWinRing0_0 = GetFunction(0, "InitializeOls")
    WR0_DeinitializeOls.ProtoWinRing0_0 = GetFunction(0, "DeinitializeOls")

    Prototype.i ProtoWinRing0_2(V1w.w, V2b.b)
    WR0_WriteIoPortByte.ProtoWinRing0_2 = GetFunction(0, "WriteIoPortByte")

    If WR0_InitializeOls()
      OptionGadget(0, 30, 20, 150, 20, "Tastatur ist aktiviert")
      OptionGadget(1, 30, 45, 150, 20, "Tastatur ist deaktiviert")
      SetGadgetState(0, 1)
      ActiveGadget_Old = 0
      Repeat
        If GetActiveGadget() <> ActiveGadget_Old
          If GetGadgetState(0)
            WR0_WriteIoPortByte($64, $AE)        ;Tastatur ein
            ActiveGadget_Old = 0
           ElseIf GetGadgetState(1)
            WR0_WriteIoPortByte($64, $AD)        ;Tastatur aus
            ActiveGadget_Old = 1
          EndIf
        EndIf
      Until WaitWindowEvent() = #PB_Event_CloseWindow
      WR0_DeinitializeOls()  
    EndIf   

  EndIf
EndIf

Gruß
Helle
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Treiber aktivieren/deaktivieren

Beitrag von ts-soft »

@Helle
Deine Ermittlung des OS (32 oder 64) während der Laufzeit ist doch quatsch.
Eine 32-Bit Exe kann keine 64-Bit DLL laden, somit muss nicht nur die DLL
angepasst werden, sondern auch die Exe. Des weiteren wäre dann eine Compilerdirektive
auch sinnvoller.
Oder sehe ich da was verkehrt?

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Re: Treiber aktivieren/deaktivieren

Beitrag von deify »

@helle

hey danke für die antwort! hab schon gedacht es kommt nichtsmehr (:

ich konnte die dll leider nicht finden, alle downloadlinks sind veraltet oder wurden entfernt!
kann man denn damit auch usb-ports deaktivieren, ich bin mir nämlich nichtmehr ganz sicher was für unsere pcs zutrifft, ich persönlich habe daheim nämlich kein ps2 mehr und kann es somit auch nicht testen (:
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Treiber aktivieren/deaktivieren

Beitrag von hjbremer »

Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Treiber aktivieren/deaktivieren

Beitrag von GPI »

Klasse Post - darf man fragen, was das für eine Datei sein soll und was sie bewirkt?
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Re: Treiber aktivieren/deaktivieren

Beitrag von Lord »

Enthält die von Rings benutzte WinRing.dll.
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Treiber aktivieren/deaktivieren

Beitrag von GPI »

Lord hat geschrieben:Enthält die von Rings benutzte WinRing.dll.
Nicht böse sein, aber ich bin genauso schlau wie vorher ;)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Re: Treiber aktivieren/deaktivieren

Beitrag von Helle »

Oh je, ist wohl meine Schuld :oops: : Ich habe hier mit einer großen Kanone (WinRing0) auf einen kleinen Spatzen (OUT Port, Wert) geschossen. Für den Schnell-Test hatte ich einfach Teile meiner CPU-Lüfter-Steuerung rauskopiert und für simple OUT-Befehle angepasst. Daher kommt auch die Verwendung von System_Info (wird dort auch für andere Infos benötigt). Wer will kann auch CompilerIf usw. verwenden. Ebenso kann jede andere Port-Ausgabe-Steuerung verwendet werden (InpoutXY, giveio, directnt usw., je nach 32-64-Bit-OS). WinRing0 ist komplizierter in der Anwendung, bietet aber sehr viel Möglichkeiten (zumindest die alte Version, die eben bei mir schon installiert ist).
Die verwendete Software muss nichts weiter umsetzen können als

Code: Alles auswählen

MOV al,0ADh
OUT 64h,al      ;Tastatur sperren
MOV al,0AEh
OUT 64h,al      ;Tastatur aktivieren
Dies funktioniert aber nur für den PS/2-Anschluss! USB-Geräte steuere ich mittels Devcon.

Gruß
Helle
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Re: Treiber aktivieren/deaktivieren

Beitrag von deify »

also ich hab mal nachgerfragt, es handelt sich in der schule auch um usb tastaturen! jetzt ist das problem halt, dass sie die tastatur treiber nicht entfernen lassen ): hast du ne idee, wenn du devcon dazu benutzt bist du vielleicht schonmal auf eine lösung gestoßen?
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Antworten