RunProgram() ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

RunProgram() ?

Beitrag von The_Dark_Zim-.- »

Hey ho
Ich will den Befehl :
"RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters"
in RunProgram() ausführen.
Das scheint aber aufgrunt der dll nicht zu gehen.

Wie kann ich das umgehen oder anders machen ?
Im mom schreibt ich das immer in eine *.bat aber das nervt, weil dann immer cmd aufgeht.

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

mit dem Flag #PB_Program_Hide erscheint kein CMD Fenster... Siehe (F1) PB-Hilfe...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Danke an Bisonte
Hab deine lösung nicht getestet wird sicherlich auch gehen ^^

Hab stattdessen das benutzt:

Code: Alles auswählen

Procedure.s GetSystemDirectory()
  Path.s=Space(501)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure

RunProgram("rundll32.exe", "user32.dll,UpdatePerUserSystemParameters", GetSystemDirectory() , 0) 
Code von hier : http://board.gulli.com/thread/1314238-d ... l-ndern/2/

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mal ne blöde Frage....

warum kein Import auf die Funktion und direkt aufrufen?
warum über die rundll32.exe?
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Wie würde das denn gehen ?
Kannst ja mal Code schicken ;)

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Hey Ho
Der Code :

Code: Alles auswählen

Procedure.s GetSystemDirectory()
  Path.s=Space(501)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure

RunProgram("rundll32.exe", "user32.dll,UpdatePerUserSystemParameters", GetSystemDirectory() , 0) 
Scheint unter Vista nicht zu laufen... Wie könnte ich das zum laufen bekommen ?

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
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

Beitrag von ts-soft »

> Wie könnte ich das zum laufen bekommen ?
Ich kann die Funktion in der DLL nicht finden, also wohl eher garnicht. Was
soll es denn machen?
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
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

@ts-soft
es soll das hintergrundbild aktuallisieren ;)

so gehts unter Vista:

Code: Alles auswählen

CreateFile(0,"refresh.bat")
WriteString(0,"RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters")
CloseFile(0)
RunProgram("refresh.bat")
Delay(500)
DeleteFile("refresh.bat")
Kann man das nicht anders machen ?
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Hey Ho hab gerade noch ein wenig getestet. Scheinabr geht das doch.

Code: Alles auswählen

Procedure.s GetSystemDirectory()
  Path.s=Space(501)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure

RunProgram("rundll32.exe", "user32.dll,UpdatePerUserSystemParameters", GetSystemDirectory() , 0) 
Irgentwie muss ich es aber erst mit einem *.BMP machen, ist aber sicher ein bug in meiner software.

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Antworten