EventMenu() Klick manuell per Befehl auslösen?

Anfängerfragen zum Programmieren mit PureBasic.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

EventMenu() Klick manuell per Befehl auslösen?

Beitrag von Ractur »

Hallo,

ich hoffe ich nerve nicht, allerdings habe ich noch nicht recht was dazu gefunden, wie kann ich bei einen PopupMenu eine Eingabe "vortäuschen"?

Code: Alles auswählen

EventID = WaitWindowEvent(1000)

   If EventID = #PB_Event_Menu
      Select EventMenu()
       Case 0
Ich will Case 0 per Mausklick auslösen, ohne das ich aber im PopupMenu wirklich klicke.

Code: Alles auswählen

   If EventID = #PB_Event_SysTray

    If EventType() = #PB_EventType_RightClick
      DisplayPopupMenu(0,WindowID(#frm_Systray))
      EndIf
      If EventType() = #PB_EventType_LeftDoubleClick
??????????????????????????????????????????????????????
      EndIf
   EndIf
Wenn man im Systray 2 mal doppeltklickt auf das Icon, soll das eben den selben Effekt haben als wie wenn man im Popupmenü ein bestimmtes Feld klicken würde. :freak:

Grüsse Matthias[/code]
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

ich glaube das einfachste wäre selber die variablen auf die gewünschten Werte zu setzen :

Code: Alles auswählen

EventID = WaitWindowEvent(1000) 
EventMenu = EventMenu() 

; hier dann einfach selber den Effekt setzten:
EventID = #PB_Event_Menu 
EventMenu = 0
; natürlich nur wenn du es wirklich willst... und es kein anderes Event gab ...

If EventID = #PB_Event_Menu 
 Select EventMenu 
  Case 0
das gleiche gilt für das andere ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Es wird doch eh ein Event bei nem Doppelklick gefeuert. Einfach mit EventType() auswerten.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag von Ractur »

Huhu,

danke erstmal, bei Case 0 springt er ins Hauptprogramm rein, und dies möchte ich eben wie bei fast allen anderen Programmen nun auch mit Doppelklick auf das Icon möglich machen.

Der Doppelklick funktioniert auch und wird so auch ausgewertet, allerdings bräuchte ich ne Möglichkeit das er nun das Programm abarbeitet als wie wenn Case 0 eingetreten wäre.

EventMenu() ist denke mal eine feste Variable der ich nichts zuweisen kann?! Ich habe Dein Beispiel mal probiert STARGÅTE , das funktioniert aber nicht, keine Reaktion.

Ich hab schon gelesen mit SendMessage_ könnte man das machen, allerdings weiss ich nicht wie genau, da blick ich nicht durch. Natürlich wär die Lösung von Dir STARGÅTE am besten und schönsten, aber Sie funktioniert net, wohl auch deshalb weil ich EventMenu() nix zuweisen kann=!?

@edel ja, der Doppelklick funktioniert auch, nur ich müsste mit dem Doppelklick ja an eine bestimmte Stelle springen! Mit GOTO Sprungmarke habe ich das schon probiert, allerdings funktioniert dann das Programm nicht mehr richtig.

Grüsse Matthias
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Hae, vielleicht solltest du dir dann eher Gedanken ueber dein Code machen?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du denkst um die falsche ecke.

was spricht gegen

Code: Alles auswählen

Select EventMenu() 
  Case 0
    Call Hauptprogram()

;...

If EventType() = #PB_EventType_LeftDoubleClick
  Call Hauptprogramm()
... mal ganz abgesehen davon, dass das nicht das "Hauptprogramm" ist, aber das ist wohl auch relativ ...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag von Ractur »

Kaeru Gaman hat geschrieben:du denkst um die falsche ecke.

was spricht gegen

Code: Alles auswählen

Select EventMenu() 
  Case 0
    Call Hauptprogram()

;...

If EventType() = #PB_EventType_LeftDoubleClick
  Call Hauptprogramm()
... mal ganz abgesehen davon, dass das nicht das "Hauptprogramm" ist, aber das ist wohl auch relativ ...
Huhu das hört sich gut an, allerdings weiss ich net genau wie ich "Call" genau verwende und dann das Hauptprogramm "deklariere"! I

Ich habe mal nen Test gemacht, habe das Hauptprogramm unten rein kopiert in:

Code: Alles auswählen

If EventType() = #PB_EventType_LeftDoubleClick
Hier das gesamte Hauptprogramm was normal bei Case 0 
Da funktioniert es!

Nur wenn ich so mache:

Code: Alles auswählen

If EventT 
Case 0
Start:

;...

If EventType() = #PB_EventType_LeftDoubleClick
goto Start
Blinkt das Fenster n paar mal, und das Programm beendet sich von selbst! Wieso denn das? Ist doch nix anderes als er Case 0 abarbeiten würde *nachdenk*

Grüsse und Danke,

Matthias
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 »

Mach mal aus Deinem Hauptprogramm eine Procedure und schmeiß die goto
raus, sonst wird das nie was :wink:

Beispiele gibts hier eigentlich genug. Dein Programmierstil der 80er bringt
Dich heutzutage eigentlich nicht zum Ziel.

Gruß
Thomas
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
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag von Ractur »

ts-soft hat geschrieben: Beispiele gibts hier eigentlich genug. Dein Programmierstil der 80er bringt
Dich heutzutage eigentlich nicht zum Ziel.
:lol: Ok, also hätte ich wohl am Amiga wohl doch net mit Basic zum programmieren anfangen sollen? :lol:

Dabei hat mir das doch immer so gefallen:

Code: Alles auswählen

10 echo "hallo"
20 goto 10
Gut werde ich mich mal mit Prozeduren beschäftigen, hmmm, das kann ja was werden :roll: Ich dachte jetzt an eine einfache Lösung :twisted:

Grüsse Matthias
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Ractur hat geschrieben:Ich dachte jetzt an eine einfache Lösung :twisted:
Prozeduren zu verwenden ist die einfachste Lösung.
Alles andere wäre Murks. ;-)

Grüße ... Kiffi
a²+b²=mc²
Antworten