Frage zum Messagerequester

Anfängerfragen zum Programmieren mit PureBasic.
Milten
Beiträge: 10
Registriert: 27.07.2006 18:01

Frage zum Messagerequester

Beitrag von Milten »

Hallo Leute!
Ich bin ein absoluter anfnger, also bitte etwas sparsamer mit fachbegriffen :)
Also: Ich wollte ein programm schreiben, was mehrere Messagerequester Fenster auf einmal öffnet. Habe dazu in der anleitung leider nix gefunden.

danke schon mal für alle antworten, schön wäre auch konstruktive kritik, wie man aus 'dummen fragen' anständge threads macht...

danke
Milten
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 »

MessageRequester sind Systembedingt immer Modal, was bedeutet, sie
blockieren mindestens die aufrufende Anwendung. Es macht eigentlich auch
gar keinen Sinn, mehrere MessageRequester zu öffnen:

1. wie willste das Auswerten?
2. Der Anwender ist total überfordert (erschrickt bei jeder Messagebox und
hat Angst was verkehrt gemacht zu haben :mrgreen: )

Beschreib mal lieber, was Du vorhast, dann finden wir auch die beste
Vorgehensweise :wink:
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
Milten
Beiträge: 10
Registriert: 27.07.2006 18:01

Beitrag von Milten »

:D Microsoft hacken
Ne also eigentlich hatte ich vor das programmm von einem freund auszulasten...Der hat so nen ding gechriebn, was alle Messageboxenschließt bevor sie da sind
Und zwar möglichst ohne das mein computer den geist aufgbt...
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 »

Code: Alles auswählen

Procedure MessageBox(lol.l)
  MessageRequester("Test", "Und noch eine!")
EndProcedure

For I = 1 To 1000
  CreateThread(@MessageBox(), 0)
Next
Viel Spaß :wink:

//Nachtrag: Danach ist evtl. ein Windows-Neustart sinnvoll :mrgreen:
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
Milten
Beiträge: 10
Registriert: 27.07.2006 18:01

Beitrag von Milten »

aua..das läuft ohne abstürzen oder? na ja..probieren geht über studieren..
finde es toll das hier so prompt geantwortet wird!
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Warum willst du es gleich mit 1000 Boxen Probieren :mrgreen:

Kannst ja ändern, denn du bist der Programmierer und musst selbst wissen,
ob dein Rechner abstürzen soll :lol:

Aber ich würde am Ende noch ein

Repeat:ForEver

am Ende einfügen.

Grüße Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
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 »

Falkos Variante ist aber auch schön, man sollte den Taskmanager griffbereit haben :mrgreen:

Code: Alles auswählen

Procedure MessageBox(lol.l)
  MessageRequester("Test", "Und noch eine!")
EndProcedure

Repeat
  CreateThread(@MessageBox(), 0)
ForEver
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
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Thomas seine Lösung ist echt gut, aber damit du auch Platz für diese
Requester hast, würde ich diesen Sourceteil voran stellen :mrgreen:

Code: Alles auswählen

hwndDesktop.l=FindWindow_(#NUL,"Program Manager"); Finde den ProgrammManager und spreichere die Adresse in ein handle

If hwndDesktop ; Wenn das Fenster bzw. Programm vorhanden ist, existiert auch eine Adresse zum Desktop
    ShowWindow_(hwndDesktop,#SW_HIDE); Hiermit werden die Programmverknüpfungen auf dem Desktop unsichtbar
    Delay(50000)                      ; Ab jetzt warte 50 Sekunden (50000ms/1000 = 50s)
    ShowWindow_(hwndDesktop,#SW_SHOW); Und nun wird wieder alles angezeigt, wie es war :D
EndI
Grüße Falko
Zuletzt geändert von Falko am 27.07.2006 19:41, insgesamt 1-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Milten
Beiträge: 10
Registriert: 27.07.2006 18:01

Beitrag von Milten »

hilfe...wäre nett wenn ihr das erklärt, wie gesagt bin anfänger und würde auch gern was lernen
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ich hoffe du verstehst, das so einigermassen, was ich in meinen source kommentiert habe.
Zu dem was Thomas geschrieben hat, ist auch nicht schwer zu verstehen, wenn man im Handbuch liest, was ein Thread ist.

Lies mal die Hilfe zu MessageRequester durch. Denn eigendlich
kanns du den Messagrequester nur einmal öffnen und das Progamm wird an der Stelle
angehalten, wo der Aufruf des Messagerequester ist. Dein Programm wird
erst weiterlaufen, wenn dieser mit OK oder anderen Buttons bestätigt wurde.

Mit Hilfe des Threads, kann man eigendlich ganz einfach dieses umgehen. Man stelle sich vor, jeder Thread ist ein eigenes Programm in dem ein Messagerequester ist. Threads sind voneinander unabhängig und können
zigmal aufgerufen werden, bis der Speicher voll ist. In jeden neuen Thread wird quasi jedesmal ein Messagerequester aufgerufen, welches auf einen
klick wartet. Erst wenn dessen Button jeweils geklickt wird, wird auch der jeweilige Thread beendet.

Ich hoffe, du hast es einigermassen verstanden

Grüße Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten