Systemsteuerungsicon, Windows-Dienste und Umgebungsvariablen
-
- Beiträge: 173
- Registriert: 30.11.2010 02:34
Systemsteuerungsicon, Windows-Dienste und Umgebungsvariablen
hallo leute,
diesmal habe ich mal wieder paar windows-spezifische frage:
wie bekomme ich ein in pb geschriebenes programm mit einem erwünschten programm-symbol in die systemsteuerung hinzugefügt? ich meine so, das die anwendung über die systemsteuerung geladen werden kann, als ob es ein bestandteil der systemsteuerung wäre?
wie kann man das eigene programm, das in pb gecodet wurde, als windows-dienst einrichten? geht das? und wenn ja wie?
und die cross-frage:
ich würde gerne globale umgebungsvariablen unter win, lin und mac einrichten und diese sollen dann bis zum herunterfahren des systems bzw. bis zum nächsten systemstart bestehen bleiben und von externen anwendungen abgerufen werden können, wie das so mit umgebungsvariablen üblich ist. wie kann ich das mittels pb machen?
mfg
kurt
Thread-Titel aussagenkräftiger gemacht von NicTheQuick
diesmal habe ich mal wieder paar windows-spezifische frage:
wie bekomme ich ein in pb geschriebenes programm mit einem erwünschten programm-symbol in die systemsteuerung hinzugefügt? ich meine so, das die anwendung über die systemsteuerung geladen werden kann, als ob es ein bestandteil der systemsteuerung wäre?
wie kann man das eigene programm, das in pb gecodet wurde, als windows-dienst einrichten? geht das? und wenn ja wie?
und die cross-frage:
ich würde gerne globale umgebungsvariablen unter win, lin und mac einrichten und diese sollen dann bis zum herunterfahren des systems bzw. bis zum nächsten systemstart bestehen bleiben und von externen anwendungen abgerufen werden können, wie das so mit umgebungsvariablen üblich ist. wie kann ich das mittels pb machen?
mfg
kurt
Thread-Titel aussagenkräftiger gemacht von NicTheQuick
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: zwei windows fragen und eine cross-frage
Die Antwort zu der Dienste-Frage findest du hier im Forum. Einfach mal suchen.
Re: zwei windows fragen und eine cross-frage
AdHoc zu Deiner ersten Frage:
Eigene Programme oder fremde CPLs in die Systemsteuerung einbinden
Grüße ... Kiffi
Eigene Programme oder fremde CPLs in die Systemsteuerung einbinden
Grüße ... Kiffi
a²+b²=mc²
-
- Beiträge: 173
- Registriert: 30.11.2010 02:34
Re: zwei windows fragen und eine cross-frage
vielen danke für eure tipps 

Re: zwei windows fragen und eine cross-frage
Zusatz: Wenn du nicht unbedingt über die Registry machen möchtest, kannst du auch eigene CPL-Dateien mit PB erstellen, indem du einfach DLL-Dateien erstellst und diese einfach umbenennst. (*.dll -> *.cpl)Kiffi hat geschrieben:AdHoc zu Deiner ersten Frage:
Eigene Programme oder fremde CPLs in die Systemsteuerung einbinden
Grüße ... Kiffi
Das habe ich damals unter Windows XP ausprobiert und hat funktioniert. Aber ob es mit Vista/7 funktioniert, weiß ich leider nicht.
-
- Beiträge: 173
- Registriert: 30.11.2010 02:34
Re: zwei windows fragen und eine cross-frage
hmm. das ist ja sehr interessant. das werde ich auch mal ausprobieren. danke für den tipp rsbasic. 

- TheCube
- Beiträge: 169
- Registriert: 20.07.2010 23:59
- Computerausstattung: Risen 3400G 16MB Win10-64Bit
- Wohnort: NRW
Re: Systemsteuerungsicon, Windows-Dienste und Umgebungsvaria
Und ? .... Funktionierts als .DLL->.CPL? Bei mir nämlich nicht. (Win7 32)hmm. das ist ja sehr interessant. das werde ich auch mal ausprobieren. danke für den tipp rsbasic.
Auch nach Benutzung der Infos von Kiffis Link gibt´s bei mir kein Icon.
Benutzter Testcode, als DLL compiliert:
Code: Alles auswählen
ProcedureDLL AttachProcess(Instance) ; *** Wird ausgeführt
MessageRequester("DLL Info", "AttachProcess " + "DLL loaded.")
EndProcedure
; Called when the program release (free) the DLL
ProcedureDLL DetachProcess(Instance) ; *** Wird ausgeführt
MessageRequester("DLL Info", "DetachProcess ")
EndProcedure
; Both are called when a thread in a program call or release (free) the DLL
ProcedureDLL AttachThread(Instance)
MessageRequester("DLL Info", "AttachThread ")
EndProcedure
ProcedureDLL DetachThread(Instance)
MessageRequester("DLL Info", "DetachThread ")
EndProcedure
ProcedureDLL TryIt()
OpenWindow(1,300,300,300,200,"TryIt",#PB_Window_SystemMenu)
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndProcedure
Werde das gelegentlich nochmal mit einer "echten" EXE probieren ....
Re: Systemsteuerungsicon, Windows-Dienste und Umgebungsvaria
Da war doch irgendwas mit CPlApplet()...
Vielleicht hilft dir diese Seite weiter: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
\\Edit:
http://www.purearea.net/pb/CodeArchiv/W ... Example.pb
\\Edit2:
Funktioniert auch unter Windows 7:

Vielleicht hilft dir diese Seite weiter: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
\\Edit:
http://www.purearea.net/pb/CodeArchiv/W ... Example.pb
\\Edit2:
Funktioniert auch unter Windows 7:

- TheCube
- Beiträge: 169
- Registriert: 20.07.2010 23:59
- Computerausstattung: Risen 3400G 16MB Win10-64Bit
- Wohnort: NRW
Re: Systemsteuerungsicon, Windows-Dienste und Umgebungsvaria
Danke für den Link an RSBasic und natürlich an den Autor Andreas ...\\Edit:
http://www.purearea.net/pb/CodeArchiv/W ... Example.pb
\\Edit2:
Funktioniert auch unter Windows 7
funktioniert super und das ohne Registryfummelei

- TheCube
- Beiträge: 169
- Registriert: 20.07.2010 23:59
- Computerausstattung: Risen 3400G 16MB Win10-64Bit
- Wohnort: NRW
Re: Systemsteuerungsicon, Windows-Dienste und Umgebungsvaria
Ist zwar schon 4 Jahre her, aber ich denke es passt einfach gut hierhin ... obwohl in Anfänger.
Mein(e) betroffenen System(e) sind Win7 64Bit, aber im Moment alles mit PB5.30 32bit gemacht.
Hier erst mal der Testcode, dann meine Fragen:Der Code wird als DLL compiliert, in .cpl umbenannt und als "CPL-Test.cpl" nach Windows/System32 kopiert.
In den Compiler Options ist bei "use Icon" ein .ico angegeben. Unicode an/aus habe ich durchprobiert.
[1]
Unter einer embedded-Version von Win7 sehe ich nach öffnen der Systemsteuerung folgenden Fehler:
Bei Name (dem Text am Icon) wird "C (32-bit)" angezeigt, und bei Info (Mauszeiger über auf Icon z.B.) nur "R",
also jeweils nur der erste Buchstabe. Auf einem standard Win7 ist es aber richtig angezeigt, könnte aber Zufall sein.
Was ist da vielleicht mittlerweile nicht mehr Win7-konform an dem älteren Codebeispiel ?
[2]
Das Icon in der Systemsteuerung ist nur das "leere Blatt", also scheint die Icon-Extraktion aus sich selbst nicht geklappt zu haben.
Wie kann ich das besser machen mit einer Datei ? (Also die .ico-Daten in der .cpl Datei integrieren, oder so ...)
Weil späteres Ziel ist natürlich statt dem Aufruf von Notepad.exe dort eigenen Code arbeiten zu lassen.
[3]
Kann ich in der Struktur oder sonstwo einen Wert angeben, um die Kategorie-Zugehörigkeit mit anzugeben ?
("Hardware und Sound", "Programme", "Darstellung und Anpassung", etc. gibt es ja da.)
Wäre toll, wenn da jemand die ein oder andere Idee hätte.
Mein(e) betroffenen System(e) sind Win7 64Bit, aber im Moment alles mit PB5.30 32bit gemacht.
Hier erst mal der Testcode, dann meine Fragen:
Code: Alles auswählen
;######################
;Author : Andreas
;######################
;Compiler-Option: DLL
;nach Erstellen in CPL umbenennen und in
;den Windows System-Ordner kopieren
;Danach erscheint das icon in der Systemsteuerung
;######################
;Das Beispiel öffnet lediglich Notepad und zeigt die
;Autoexec.bat an.
;######################
ProcedureDLL.l CPlApplet(hwndCPI.l,uMsg.l,lParam1.l,lParam2.l)
Shared Name.s,Info.s
#CPL_DBLCLK = 5
#CPL_EXIT = 7
#CPL_GETCOUNT = 2
#CPL_INIT = 1
#CPL_INQUIRE = 3
#CPL_STOP = 6
#CPL_NEWINQUIRE = 8
Structure NEWCPLINFO
dwSize.l
dwFlags.l
dwHelpContext.l
lData.l
hIcon.l
szName.b[32]
szInfo.b[64]
szHelpFile.b[128]
EndStructure
Select uMsg
Case #CPL_INIT
;beim Initieren die Variablen füllen
Name = "CPL-Test" ;Name der unter dem Icon erscheint (max. 32)
Info = "Ruft nur Notepad auf" ;Info die in der Statusbar erscheint (max. 64)
result = 1
Case #CPL_GETCOUNT
result = 1 ;1 Icon
Case #CPL_NEWINQUIRE
;Informationen setzen
*cp.NEWCPLINFO = lParam2
*cp\dwSize = SizeOf(NEWCPLINFO)
*cp\hIcon = ExtractIcon_(0,"CPL-Test.cpl",0)
PokeS(@*cp\szName[0], Name)
PokeS(@*cp\szInfo[0], Info)
result = 0
Case #CPL_DBLCLK
;hier passiert alles was beim Doppelklick auf das Icon passieren soll
;in diesem Fall wird Notepad gestartet
RunProgram("Notepad.exe","c:\autoexec.bat", "c:\", 0)
result = 0
Case #CPL_STOP
result = 0
Case #CPL_EXIT
result = 0
EndSelect
ProcedureReturn result
EndProcedure
In den Compiler Options ist bei "use Icon" ein .ico angegeben. Unicode an/aus habe ich durchprobiert.
[1]
Unter einer embedded-Version von Win7 sehe ich nach öffnen der Systemsteuerung folgenden Fehler:
Bei Name (dem Text am Icon) wird "C (32-bit)" angezeigt, und bei Info (Mauszeiger über auf Icon z.B.) nur "R",
also jeweils nur der erste Buchstabe. Auf einem standard Win7 ist es aber richtig angezeigt, könnte aber Zufall sein.
Was ist da vielleicht mittlerweile nicht mehr Win7-konform an dem älteren Codebeispiel ?
[2]
Das Icon in der Systemsteuerung ist nur das "leere Blatt", also scheint die Icon-Extraktion aus sich selbst nicht geklappt zu haben.
Wie kann ich das besser machen mit einer Datei ? (Also die .ico-Daten in der .cpl Datei integrieren, oder so ...)
Weil späteres Ziel ist natürlich statt dem Aufruf von Notepad.exe dort eigenen Code arbeiten zu lassen.
[3]
Kann ich in der Struktur oder sonstwo einen Wert angeben, um die Kategorie-Zugehörigkeit mit anzugeben ?
("Hardware und Sound", "Programme", "Darstellung und Anpassung", etc. gibt es ja da.)
Wäre toll, wenn da jemand die ein oder andere Idee hätte.
