Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zugriff auf NVIDIA-Grafik-Treiber (https://www.delphipraxis.net/79905-zugriff-auf-nvidia-grafik-treiber.html)

Admirandis 30. Okt 2006 19:18


Zugriff auf NVIDIA-Grafik-Treiber
 
Hi Leute!

Ich hoffe jetzt einfach mal, dass ich im richtigem Forum gelandet bin... ^^

Ich hab mir folgendes überlegt: Wäre es irgendwie möglich auf den NVIDIA Grafik Treiber zuzugreifen und so Einstellungen an der Grafikeinstellung zu machen...

Gekommen ist mir die Idee dadurch, dass ich letztens bei einer Veranstaltung bei unserer Schule an meiner Grafikkarte ein Monitor, einen Beamer und einen Fernseher hängen hatte. Das Problem lag jetzt darin, dass ich ziemlich oft ziemlich schnelle umschalten musste zwischen Beamer, TV und Bildschirm... Deswegen wäre es hier praktisch gewesen irgendein kleines Programm im Hintergrund laufen zu lassen, des über einen globalen hotkey die Einstellung ändert...

Ich hab auch schon ein bisschen was hier im Forum gefunden: Link

Hab aber hierbei keine Ahnung, wie man über Windows mit Treiber kommunizieren soll :gruebel:

Ich hoffe ihr habt irgendwelche geistreiche und sinnvolle Ideen und Kommentare für mich...

Grüße

Admirandis :dp:

Sixfold 23. Jun 2007 10:46

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Genau das gleiche Problem hatteich auch... Bin aber inzwischen n bisschen weiter gekommen: bei nvidia gabs mal den Control Panel SDK.. gibts aber jetzt wohl nicht mehr.

Auf jeden fall kannstdu beispielsweise per hotkey dein Primärmonitor wechseln:
Delphi-Quellcode:
rundll32.exe NvCpl.dll,NvCycleDisplayDeviceEx
da gbts noch ne ganze reihe mehr solche befehle..

nur hab ich jetzt ein problem: unter vista funktionieren diese befehle nicht mehr!!!

kann mir evtl da jemand weiter helfen?

Olli 1. Jul 2007 01:32

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Mit einem Treiber kommunizierst du über jene Funktionen mit denen du auch Dateien schreibst/liest sowie über DeviceIoControl (es gibt noch andere weniger dokumentierte).

Jedoch muß man dazu alle Parameter kennen. Genau das wird dir aber keiner der Grafikkartenhersteller sagen. Ergo benutze deren GUI zum Konfigurieren oder schau ob du die Registryschlüssel rausfinden kannst, wo diese Einstellungen seitens der GUI gespeichert werden (bspw. mit RegMon von Sysinternals).

Sixfold 2. Jul 2007 01:43

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Ich hab das Programm mit dem Process Monitor überprüft, es macht keine "verdächtigen" Registry-Einträge o.Ä.
Aber es startet die Rundll32.exe. Wenn ich aber diese Exe mit den gleichen Parametern starte wies zuvor das Nvidia Programm gemacht hat passiert nichts.
Als hätte der Rundll Prozess keine Rechte oder so.. :(

Hat da jemand ne idee dazu?

Olli 2. Jul 2007 01:51

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Welches OS? Rundll läuft im Kontext des Benutzers der es startet, also wirst du selber eine Aussage über die Rechte machen können.

O.g. Zeile startet im Prinzip nur das Control-Panel für den nVidia-Treiber, nicht mehr und nicht weniger. Übrigens könnte es sein, daß das nVidia-Programm einen Mutex erzeugt o.ä., so daß du mindestens das gleiche tun mußt um es anzeigen zu können. Im schlimmsten Fall überprüfen die, ob die Signatur der Datei ihre eigene ist. Dann hättest du ein Problem ;)

Mackhack 2. Jul 2007 03:38

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Liste der Anhänge anzeigen (Anzahl: 1)
Attached hab ich mal das nVidia API Referenc pdf! Das gibt alle Funktionen preis die nVidia wohl preisgeben will!

Olli 2. Jul 2007 03:59

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Nicht schlecht, hätte ich nicht erwartet. Aber wie ich es so sehe sind zumindest keine IOCTLs erklärt ... also zumindest wie zu erwarten keine direkte Kommunikation mit dem Treiber :mrgreen: :zwinker:

Mackhack 2. Jul 2007 04:00

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Was sind denn IOCTL's?

turboPASCAL 2. Jul 2007 09:24

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Zitat:

Zitat von Mackhack
Was sind denn IOCTL's?

Input / Ouput Controls known as IOCTLs. :gruebel:
Input / Output Controls bekannt als IOCTLs. :mrgreen:

Olli 2. Jul 2007 10:11

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
IOCTL = I/O Control Code ;)

Das sind einfach "Nummern" die man zusammen mit Ein- und/oder Ausgabepuffern (wobei das nur eine Konvention ist, aber der Ausgabepuffer durchaus auch als zweiter Eingabepuffer benutzt werden kann) an ein Gerät schickt. Der Treiber welcher das Gerät bereitstellt nimmt dann (üblicherweise ;)) die gewünschte Aktion vor. Siehe auch MSDN-Library durchsuchenCTL_CODE.

Sixfold 2. Jul 2007 10:56

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
@Mackhack:

Die API hab ich auch, s gibt glaub sogar noch ne neuere Version bei Nvidia.
Die beschriebenen Funktionen haben unter XP auch wunderbar funktioniert, nur seit ich Vista drauf hab geht nichts mehr, also keine Fehlermeldung sondern einfach nichts.

und @Olli:

Das Problem tritt unter Vista auf, bin aber als Admin angemleldet und UAC ist ausgeschaltet.
Auch wenn ich die dll in einem eigenen Delphi-Programm lade funktioniert nichts.

Olli 2. Jul 2007 21:22

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Bist du mal mit nem Debugger durchgegangen bis du in deren DLL bist? Funktioniert das Laden überhaupt? Sind deine Manifeste alle Vista-kompatibel?

Sixfold 2. Jul 2007 21:31

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Ich hab keine Ahnung wie das mit dem debuggen geht.. :(
Aber die dll laden kann ich ohne probleme in meinem proramm.
und vista-kompatibel sollte ja auch alles sein (delphi 2007, nvidia vista-treiber)

Olli 2. Jul 2007 22:25

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Tja, wie soll ich dir da helfen? Zum Thema Debuggen sollte es doch was in der Delphi-Hilfe oder im Internet geben?!

Admirandis 23. Jan 2009 10:25

Re: Zugriff auf NVIDIA-Grafik-Treiber
 
Hallo zusammen!

Ich weiß, das Thema ist schon ein wenig eingestaubt, aber ich habe gerade gesehen, dass es im aktuellen Treiber die Möglichkeit gibt Profile zu verwenden. Eventuell würde es schon reichen, wenn du deine Einstellungen in 2 Profile schreibst und dann nur diese lädst.

Grüße Admirandis


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz