komischerweise will sich mein Listgadget nicht in echtzeit mit der Ausgabe der Console synchronisieren. Sondern erst nach dem Beenden des gestarteten Programms erscheinen alle texte.
Zudem will Findstring und die darauf folgenden Aktionen auch iwie nicht klappen...
der Menübefehl #stop klappt einwandfrei... ich muss nur leider raten, wann ich ihn benutzen darf....
Code: Alles auswählen
UIN.s = "465879999"
pw.s = "123456"
IncludeFile "joe_gui_include.pb"
Open_ICQ("0.1")
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Menu
MenuID = EventMenu()
If MenuID = #open
ClearGadgetItemList(#joeoutput)
ext.s = GetExtensionPart(file2open.s)
ICQ = RunProgram("imcore/bin/base/accbuddy.exe" ,UIN +" "+ pw , "" , #PB_Program_Open | #PB_Program_Read | #PB_Program_Error |#PB_Program_Write)
pos = -1
; AddGadgetItem(#joeoutput, pos, "test")
started = 1
ElseIf MenuID = #stop
; If ready
WriteProgramStringN(ICQ, "im:nd ICQNR") ; anstelle von ICQNR die ziel ICQ# eingeben
Delay(1000)
WriteProgramStringN(ICQ, "im:s test!!")
Delay(1000)
WriteProgramStringN(ICQ, ":q")
; Else
; MessageRequester("ERROR", "Account not yet ready.")
; EndIf
ElseIf MenuID = #exit
End
ElseIf MenuID = #MENU_7
Debug "GadgetID: #MENU_7"
ElseIf MenuID = #settings
Debug "GadgetID: #settings"
MessageRequester("Sorry...", "This option is not jet implied.")
ElseIf MenuID = #hilfe
MessageRequester("Helpfile", "hier könnte eine Hilfe-Datei geladen werden.")
ElseIf MenuID = #about
MessageRequester("About", "ICQ GUI" +Chr(10)+"----------" +Chr(10)+ "Coded by ")
EndIf
EndIf
If Event = #PB_Event_Gadget
If GadgetID = #joeoutput
ElseIf GadgetID = #Button_2
filename.s = GetFilePart(file2open)
curr_date.s = FormatDate("%dd.%mm.%yyyy", Date())
saveto.s = SaveFileRequester("Save log to...", "jb_"+curr_date.s+"_"+filename.s+".log", "LogFiles | *.log",0)
If StringByteLength(saveto) > 2
CreateFile(0, saveto)
WriteStringN(0, "ICQ Security Console Output Logfile")
WriteStringN(0, "--------------------------------------")
counted_entries = CountGadgetItems(#joeoutput)
While counted_entries <> loopcount
WriteStringN(0,GetGadgetItemText(#joeoutput, loopcount))
loopcount + 1
Wend
CloseFile(0)
MessageRequester("Done", "File created!")
EndIf
EndIf
EndIf
If started
If ProgramRunning(ICQ)
If AvailableProgramOutput(ICQ)
; Debug ReadProgramString(ICQ)
im_string.s = ReadProgramString(ICQ)
If FindString(im_string, UIN + " is online.", 0)
ready = 1
WriteProgramStringN(ICQ, "im:nd ICQNR") ; anstelle von ICQNR die ziel ICQ# eingeben
WriteProgramStringN(ICQ, "im:s test!!")
EndIf
If FindString(im_string, "ACC_E_RATE_LIMITED", 5)
MessageRequester("ERROR", "Too much server activity has happened too quickly.")
EndIf
AddGadgetItem(#joeoutput, pos, im_string)
If StringByteLength(ReadProgramError(ICQ)) <> 0
AddGadgetItem(#joeoutput, pos, "[ERROR]" + ReadProgramError(ICQ))
EndIf
; pos + 1
EndIf
Else
started = 0
AddGadgetItem(#joeoutput, pos,"Exitcode: " + Str(ProgramExitCode(ICQ)))
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
Ich danke vielmals und wünsche schöne Restfeiertage
//edit//
scheinbar sind manche Programme (nicht PB-Compiliert) Inkompatibel zu ReadProgramString(). Die Programme werden zwar eingelesen allerdings erfolgt die Ausgabe sowie interaktion erst nach beenden des Programms....
Ideen?