Seite 1 von 1
? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 00:32
von Charly
Hallochen
folgende kleines Testprogramm:
Code: Alles auswählen
If OpenConsole()
EnableGraphicalConsole(1)
Repeat
a$ = Input()
If a$="."
Break
EndIf
Print (a$)
ForEver
EndIf
wenn ich das Prg nun starte und STRG+C druecke wird es beendet
wie kann ich das verhindern ?
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 08:57
von ts-soft
Code: Alles auswählen
If OpenConsole()
SetConsoleCtrlHandler_(0, #True)
EnableGraphicalConsole(1)
Repeat
a$ = Input()
If a$="."
Break
EndIf
Print (a$)
ForEver
EndIf
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 09:54
von RSBasic
Und falls man nicht möchte, dass der Benutzer einfach über den X-Button schließen kann:
Code: Alles auswählen
EnableExplicit
Define a$
Define ConsoleHandle
If OpenLibrary(0, "Kernel32.dll")
Prototype GetConsoleWindow()
Define GetConsoleWindow.GetConsoleWindow = GetFunction(0, "GetConsoleWindow")
CloseLibrary(0)
EndIf
If OpenConsole()
SetConsoleCtrlHandler_(0, #True)
ConsoleHandle = GetConsoleWindow()
EnableMenuItem_(GetSystemMenu_(ConsoleHandle, #False), #SC_CLOSE, #MF_DISABLED)
EnableGraphicalConsole(1)
Repeat
a$ = Input()
If a$="."
Break
EndIf
Print (a$)
ForEver
EndIf
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 10:18
von ts-soft
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 10:25
von Charly
vieeelen dank, aber:
1. wo findet man diese info?, i hab in der Hilfe nicht gefunden ;(
2. wie bekommt mein Prg. mit das Strg+C gedrueckt wurde ? (brauch es fuer Copy & Past (ctrl+c / ctrl+v) )
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 10:34
von RSBasic
Charly hat geschrieben:1. wo findet man diese info?, i hab in der Hilfe nicht gefunden ;(
Das sind WinAPIs und werden von Windows bereitgestellt. Diese haben mit PB nichts zu tun. WinAPIs werden am Ende des Funktionsnamens mit einem _ gekennzeichnet.
PB bietet nur ein Bruchteil der Funktionen an. Alle Funktionen findest du auf der
Microsoft MSDN-Seite.
Wenn du die MSDN-Seite einer bestimmten Funktion öffnen möchtest, einfach "SendMessage msdn" googlen. (Beispiel)
Charly hat geschrieben:2. wie bekommt mein Prg. mit das Strg+C gedrueckt wurde ? (brauch es fuer Copy & Past (ctrl+c / ctrl+v) )
Du kannst bei SetConsoleCtrlHandler_() im ersten Parameter eine Prozedur angeben:
Code: Alles auswählen
EnableExplicit
Define a$
Define ConsoleHandle
If OpenLibrary(0, "Kernel32.dll")
Prototype GetConsoleWindow()
Define GetConsoleWindow.GetConsoleWindow = GetFunction(0, "GetConsoleWindow")
CloseLibrary(0)
EndIf
Procedure ConsoleCtrlHandler()
Debug "Hier koennen noch wichtige Einstellungen gespeichert werden..."
Delay(2000)
Debug "Fertig, Ende."
EndProcedure
If OpenConsole()
SetConsoleCtrlHandler_(@ConsoleCtrlHandler(), #True)
ConsoleHandle = GetConsoleWindow()
EnableMenuItem_(GetSystemMenu_(ConsoleHandle, #False), #SC_CLOSE, #MF_DISABLED)
EnableGraphicalConsole(1)
Repeat
a$ = Input()
If a$="."
Break
EndIf
Print (a$)
ForEver
EndIf
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 10:43
von RSBasic
Da du bereits online warst, muss ich leider einen Doppelbeitrag schreiben.
Wenn man innerhalb der Konsole was markieren, kopieren und einfügen möchte, dann bitte über das Programmmenü: Programmicon > Bearbeiten > Markieren > Text markieren und Strg + C drücken
Das ist ein Standardverhalten und das sollten die Konsolenbenutzer kennen.
Re: ? Strg + C wie 'abfangen'
Verfasst: 21.09.2016 10:56
von Charly
moinmoin & danke f. die Antworten,
kurz zur erleuterung, i versuche ein PRG. zu erstellen das ohne Mausbedienung auskommt,
da es im 'schwierigen' umfeld 'bedient' wird und die Maus da stroert.......
markieren soll ueber shift+pfeiltasten laufen, ctrl+c kopiert, ctrl+v fuegt ein
auch erkennt das Prg. welcher Parameter eingegeben wurde....
(dh. wenn i das richtg verstanden habe laeuft alles ueber inkey & rawkey )
das ist so im moment die 'grund idee' , mal sehen wie weit ich als frischling komme..........
(ist ein freeware projekt)