Wünsche mir einen KillFileRequester

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Wünsche mir einen KillFileRequester

Beitrag von hjbremer »

ich wünsche mir einen KillFileRequester.

denn beim OpenFileRequester steht öffnen, ich hätte aber gerne das da löschen oder zumindest ok steht.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Wünsche mir einen KillFileRequester

Beitrag von DarkDragon »

Dann wärs aber doch ein "DeleteFileRequester" und nicht "KillFileRequester". Prozesse werden getötet, Dateien werden gelöscht.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wünsche mir einen KillFileRequester

Beitrag von RSBasic »

@hjbremer
Ich hab mal für dich einen Code mit Hilfe dieses Threads ( http://www.purebasic.fr/english/viewtop ... 12&t=38051 ) geschrieben:

Code: Alles auswählen

EnableExplicit

Define EventID
Define File$

Global WinMainX, WinMainY, WinMainWidth, WinMainHeight

Procedure RequesterCallBack(hWnd, uMsg, wParam, lParam)
  hWnd = FindWindow_(#Null,"Datei löschen")
  If hWnd
    hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
    If hWnd
      SetWindowText_(hWnd,"Löschen")
    EndIf
  EndIf

  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,100,20,"DeleteFileRequester",0)
 
  SetWindowCallback(@RequesterCallBack())
 
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      File$ = OpenFileRequester("Datei löschen","","",0,0)
      If File$
        Debug File$
      EndIf
  EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
  End
EndIf
ForEver
EndIf
Ist es das, was du möchtest?

Sieht dann so aus:
Bild
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Wünsche mir einen KillFileRequester

Beitrag von hjbremer »

Cool, sehr gut, danke RSBasic

normalerweise wärs das, aber ich bräuchte das für ein kleines Toolfenster, welches in den verschiedensten Programmen via Include eingebunden wird, und das sollte keinen Callback haben, denn in PB gibt es ja nur einen Callback im Mainprogramm.

Ich könnte natürlich meine eigene Dialogbox machen, oder ein Treegadget benutzen, aber der Aufwand nur für ein klitzekleines Wort. Das ist zuviel des Guten.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Wünsche mir einen KillFileRequester

Beitrag von HeX0R »

hjbremer hat geschrieben:[...]denn in PB gibt es ja nur einen Callback im Mainprogramm.
SetWindowCallback() hat einen optionalen Parameter...
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wünsche mir einen KillFileRequester

Beitrag von RSBasic »

@hjbremer
Und wie sieht es mit einem Thread aus? Ginge das?
Entscheidend sind folgende Code-Zeilen:

Code: Alles auswählen

hWnd = FindWindow_(#Null,"Datei löschen")
  If hWnd
    hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
    If hWnd
      SetWindowText_(hWnd,"Löschen")
    EndIf
  EndIf
Hier mal ein Thread-Beispiel:

Code: Alles auswählen

EnableExplicit

Define File$

Procedure RequesterThread(z)
  Protected hWnd
  
  Repeat
    hWnd = FindWindow_(#Null,"Datei löschen")
    If hWnd
      hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
      If hWnd
        SetWindowText_(hWnd,"Löschen")
      EndIf
    EndIf
    Delay(100)
  Until hWnd
  
EndProcedure

CreateThread(@RequesterThread(),0)

File$ = OpenFileRequester("Datei löschen","","",0,0)
If File$
  Debug File$
EndIf
\\Edit:
Ja, HeX0R hat Recht. Da gibt es einen optionalen Parameter, falls dir das hilft.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Wünsche mir einen KillFileRequester

Beitrag von hjbremer »

HeX0R hat geschrieben:
hjbremer hat geschrieben:[...]denn in PB gibt es ja nur einen Callback im Mainprogramm.
SetWindowCallback() hat einen optionalen Parameter...

Man hätte trotzdem 2 Callbacks, habe mit dem Parameter schon gearbeitet, und 2 Callbacks im Programm gehabt. Hat nicht so recht funktioniert. Wohl mangels Wissen.

Aber die Sache mit dem Thread funktioniert

Vielen Dank für die Mühe. :D :allright:
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten