RunDll32

Anwendungen, Tools, Userlibs und anderes nützliches.

Wie findet ihr das "Systrayschnellstart" Programm für RunDll32?

Ich finde es gut
1
8%
Was ist den das für ein Schrott?
7
58%
Geht so
4
33%
 
Insgesamt abgegebene Stimmen: 12

Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

RunDll32

Beitrag von Programie »

Ich hab heute mal ein "kleines" Programm geschrieben.
Das Programm hat kein Fenster (Openwindow(...)).

Es läuft mit einem Systrayicon.

Naja hier ist der PB Code:

Code: Alles auswählen

OpenFile(0,"System.txt"):CloseFile(0); Wird nur benutzt, damit die Datei erstellt wird, wenn sie nicht erstellt wurde. Wird der Editor benutzt, braucht man diese Zeile nicht (Ich habe es durch RunProgram("Preferences.xe") ersetzt).
OpenPreferences("System.txt"); Die Datei muss jeder selbst bearbeiten oder den Einstellungseditor benützen (siehe unten)
 Image$ =ReadPreferenceString("Icon","")
 System$=ReadPreferenceString("Systempath","")
 Font$  =ReadPreferenceString("Font","D")
ClosePreferences()
If ReadFile(0,Image$)
 CloseFile(0)
Else
 MessageRequester("Fehler","Systrayicon wurde nicht gefunden!"+Chr(13)+"> "+Image$+" <",0):End
EndIf

If Font$="D"
Prog$="RunDll"
EndIf
If Font$="L"
Prog$="rundll"
EndIf
If Font$="U"
Prog$="RUNDLL"
EndIf

Run$=System$+Prog$+"32.exe"
If OpenWindow(0,0,0,0,0,#PB_Window_Invisible,Prog$,0)
  If CreatePopupMenu(0)
   OpenSubMenu("Power")
    MenuItem( 0,"Abmelden")
    MenuItem( 1,"Benutzer wechseln")
    MenuItem( 2,"Herunterfahren")
    MenuItem( 3,"Neustarten")
    MenuItem( 4,"Ruhezustand")
    MenuItem( 5,"Standby")
   CloseSubMenu()
   OpenSubMenu("Steuerung")
    MenuItem( 6,"Systemsteuerung öffnen")
    MenuBar()
    MenuItem( 7,"Maus")
    MenuItem( 8,"Tastatur")
    MenuItem( 9,"Drucker")
    MenuItem(10,"Schriftarten")
    MenuItem(11,"Energie")
   CloseSubMenu()
   OpenSubMenu("Eingabehilfen")
    MenuItem(12,"Tastatur")
    MenuItem(13,"Sound")
    MenuItem(14,"Anzeige")
    MenuItem(15,"Maus")
    MenuItem(16,"Allgemein")
   CloseSubMenu()
   OpenSubMenu("Software")
    MenuItem(17,"Hinzufügen")
    MenuItem(18,"Entfernen")
    MenuBar()
    MenuItem(19,"Setup")
   CloseSubMenu()
   OpenSubMenu("Anzeige")
    MenuItem(20,"Hintergrund")
    MenuItem(21,"Bildschirmschoner")
    MenuItem(22,"Darstellung")
   CloseSubMenu()
   OpenSubMenu("Eigenschaften")
    MenuItem(23,"Maus")
    MenuItem(24,"Tastatur")
   CloseSubMenu()
   OpenSubMenu("Netzwerk")
    MenuItem(25,"Laufwerk verbinden")
    MenuItem(26,"Laufwerk trennen")
   CloseSubMenu()
   OpenSubMenu("Hardware")
    MenuItem(27,"Hardware entfernen")
   CloseSubMenu()
    MenuItem(28,"Information")
    MenuBar()
    MenuItem(29,"Beenden")
  EndIf
   AddSysTrayIcon(0,WindowID(),LoadImage(0,Image$))
   SysTrayIconToolTip(0,Prog$)
 Repeat
  Event=WaitWindowEvent()
   If Event=#PB_Event_SysTray
    If EventType()=#PB_EventType_RightClick
     DisplayPopupMenu(0,WindowID())
    EndIf
   EndIf
   If Event=#PB_Event_Menu
    Select EventMenuID()
     Case 0
      RunProgram(System$+"Logoff.exe")
     Case 1
      RunProgram(Run$,"user32.dll,LockWorkStation","",0)
     Case 2
      RunProgram(Run$,"Shell32.dll,SHExitWindowsEx 1","",0)
     Case 3
      RunProgram(Run$,"Shell32.dll,SHExitWindowsEx 2","",0)
     Case 4
      RunProgram(Run$,"Shell32.dll,SHExitWindowsEx 3","",0)
     Case 5
      RunProgram(Run$,"Shell32.dll,SHExitWindowsEx 5","",0)
     Case 6
      RunProgram(Run$,"Shell32.dll,Control_RunDLL","",0)
     Case 7
      RunProgram(Run$,"Shell32.dll,Control_RunDLL main.cpl,@0","",0)
     Case 8
      RunProgram(Run$,"Shell32.dll,Control_RunDLL main.cpl,@1","",0)
     Case 9
      RunProgram(Run$,"Shell32.dll,Control_RunDLL main.cpl,@2","",0)
     Case 10
      RunProgram(Run$,"Shell32.dll,Control_RunDLL main.cpl,@3","",0)
     Case 11
      RunProgram(Run$,"Shell32.dll,Control_RunDLL main.cpl,@4","",0)
     Case 12
      RunProgram(Run$,"shell32.dll,Control_RunDLL access.cpl,,1","",0)
     Case 13
      RunProgram(Run$,"shell32.dll,Control_RunDLL access.cpl,,2","",0)
     Case 14
      RunProgram(Run$,"shell32.dll,Control_RunDLL access.cpl,,3","",0)
     Case 15
      RunProgram(Run$,"shell32.dll,Control_RunDLL access.cpl,,4","",0)
     Case 16
      RunProgram(Run$,"shell32.dll,Control_RunDLL access.cpl,,5","",0)
     Case 17
      RunProgram(Run$,"shell32.dll,Control_RunDLL appwiz.cpl,,1","",0)
     Case 18
      RunProgram(Run$,"shell32.dll,Control_RunDLL appwiz.cpl,,0","",0)
     Case 19
      RunProgram(Run$,"shell32.dll,Control_RunDLL appwiz.cpl,,2","",0)
     Case 20
      RunProgram(Run$,"shell32.dll,Control_RunDLL desk.cpl,,0","",0)
     Case 21
      RunProgram(Run$,"shell32.dll,Control_RunDLL desk.cpl,,1","",0)
     Case 22
      RunProgram(Run$,"shell32.dll,Control_RunDLL desk.cpl,,2","",0)
     Case 23
      RunProgram(Run$,"shell32.dll,Control_RunDLL main.cpl @0","",0)
     Case 24
      RunProgram(Run$,"shell32.dll,Control_RunDLL main.cpl @1","",0)
     Case 25
      RunProgram(Run$,"shell32.dll,SHHelpShortcuts_RunDLL Connect","",0)
     Case 26
      RunProgram(Run$,"shell32.dll,SHHelpShortcuts_RunDLL Disconnect","",0)
     Case 27
      RunProgram(Run$,"shell32.dll,Control_RunDLL hotplug.dll","",0)
     Case 28
      RunProgram(Run$,"Shell32.dll,ShellAboutA","",0)
     Case 29
      Quit=MessageRequester(Prog$,"Soll das Systrayicon jetzt etfernt werden?",#PB_MessageRequester_YesNo)
       If Quit=6
        End
       EndIf
    EndSelect
   EndIf
 Until Event=#PB_Event_CloseWindow
EndIf
Und hier ist der Einstellungseditorcode:

Code: Alles auswählen

New:
Icon$=OpenFileRequester("Systrayicon suchen",Icon$,"Icon (*.ico)|*.ico",0)
Sys$ =PathRequester("System32pfad suchen",Sys$)
Font$=InputRequester("Schriftart wählen","D=Normal (Aa) L=Klein (aa) U=Groß (AA)",Font$)
If Font$="L"
FontText$="LowerCase"
ElseIf Font$="U"
FontText$="UpperCase"
Else
FontText$="Default"
EndIf
OpenConsole()
ConsoleLocate(10,10)
Print("Systrayicon: "+Icon$)
ConsoleLocate(10,11)
Print("System32pfad: "+Sys$)
ConsoleLocate(10,12)
Print("Schriftart: "+FontText$)
ConsoleLocate(10,15)
Print("OK?")
ConsoleLocate(10,16)
Print("A=Abbrechen  J=Ja  N=Nein")
ConsoleLocate(10,20)
In$=Input()
Print(In$)
If In$="A"
CloseConsole()
End
EndIf
If In$="J"
ConsoleLocate(10,30)
Print("Erstelle Einstellungsdatei")
CreatePreferences("System.txt")
Print("Schreibe Icon in die Datei")
WritePreferenceString("Icon",Icon$)
Print("Schreibe Systemverzeichnis in die Datei")
WritePreferenceString("Systempath",Sys$)
Print("Schreibe Schriftart in die Datei")
WritePreferenceString("Font",Font$)
Print("Schließe Datei")
ClosePreferences()
Print("Fertig")
Delay(1000)
CloseConsole()
EndIf
If In$="N"
ConsoleLocate(10,30)
Print("Es werden nun die Einstellungen neugestartet...")
Delay(3000)
CloseConsole()
Goto New:
EndIf
; Bei diesem Code hatte ich lust auf eine Konsolenanwendung.
BildBildBildBild
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 »

Naja, *hust
hab meine Systemsteuerung so eingestellt, das sie autom. aufklappt, ist immer Vollständig und bedarf keines extra Programmes im systray, also total überflüssig.
Aber als Einsteiger hab ich früher auch solche, bzw. ähnliche Programme erstellt und man lernt eigentlich immer dazu. Mach also einfach weiter, wird im Laufe der Zeit schon besser. Wirklich nützliche Programme zu Schreiben ist sowieso nicht so einfach, das meiste gibt es schon. Bis Du da was gefunden hast, einfach weiter Üben :allright:
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
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Also, ich würde ihn jetzt nicht so runterziehen. Über die art des codens und die Fehlerabfragen sehen wir mal hinweg. Grundsätzlich ist das mini-Tool "brauchbar" - wenn man davon ausgeht, dass es EDV-Leute gibt, die vielleicht öfters an verschiedenen Systemen arbeiten (müssen) und ständig was an der konfig ändern müssen. Die ersparen sich da vielleicht Zeit. Ich selbst brauch es ebenfalls nicht.

Außerdem solltest du "universeller" denken. Mich stört, das im ganzen Programm nahezu null Fehlerabfragen laufen. Habs so wie es ist gestartet. passiert nix (sichtbares). Er hat das Icon und die Pref nicht gefunden und meckert nicht. Der System-Pfad muss automatisch ermittelt werden (nutz die Suche vom Forum). Die Schreibweise der dll spielt keine Rolle, kannste weglassen usw...

Aber in einem hat TS-Soft auf jeden Fall recht: üben, üben, üben. Gilt für mich auch. Ich hab den Code in mein Archiv gepackt, vielleicht brauch ich ja mal solche aufrufe ;)
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
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 »

Ich habe ihn oder sein Programm ja nicht heruntergezogen, das wurde dann verkehrt verstanden. Habe lediglich darauf hingewiesen, das es nicht allzu nützlich ist. Ich denke solche Dinge möchte er ja auch erfahren, wenn er so eine Umfrage startet :wink: . Bin doch auf den Programmierstil diesmal garnicht eingegangen :roll:
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
Antworten