Textfeld stat MSG box?

ATdrag0N

Erfahrenes Mitglied
Hallo,
es ist ja möglich wenn man ein Programm startet über diesen Befehl:

Shell "D:\xxxx\xxx\xxx\xxx\xxx\xxx", vbHide
eine MSG box einzufügen, die dann sagt Programm gestartet zum Beispiel^^.

Ist es möglich ein Textfeld zu machen wo das dann steht statt in der msgbox ?

Weil ich starte mehrere Programme mit ein butten und wollte dann das so haben das in ein Textfeld steht wenn ein Programm erfolgreich hochgefahren ist zb. Programm 1 100% geladen oder so was in der Art.


Ich habe da noch was, ich habe eine kill Funktion eingebaut die dateien löschen tut, aber wenn diese Datei nicht da ist kommt dann dieser Fehler:

Run-time error 53:
File not found

kann man diesen Fehler wieleicht auch in das textfeld integrieren so das da steht kein passendes Dokument zum löschen gefunden? also das der Fehler damit aufgehoben wird.
 
Zuletzt bearbeitet:
Hallo,
es ist ja möglich wenn man ein Programm startet über diesen Befehl:

Shell "D:\xxxx\xxx\xxx\xxx\xxx\xxx", vbHide
eine MSG box einzufügen, die dann sagt Programm gestartet zum Beispiel^^.

Ist es möglich ein Textfeld zu machen wo das dann steht statt in der msgbox ?

Weil ich starte mehrere Programme mit ein butten und wollte dann das so haben das in ein Textfeld steht wenn ein Programm erfolgreich hochgefahren ist zb. Programm 1 100% geladen oder so was in der Art.

Ich wüsste jetzt aus dem Stehgreif nicht, wie man abfragen soll, ob ein anderes Programm fertig geladen ist, und ich programmiere schon seit 5 Jahren in VB. HAb ich bisher auch noch nicht gebraucht ;)

Aber hier mal ein paar Lösungsansätze:

1. Direkt beim Klicken des Buttons kommt die Meldung
2. Du baust die msgbox in das andere Programm ein (wenn es natürlich von dir ist)

Ich habe da noch was, ich habe eine kill Funktion eingebaut die dateien löschen tut, aber wenn diese Datei nicht da ist kommt dann dieser Fehler:

Run-time error 53:
File not found

kann man diesen Fehler wieleicht auch in das textfeld integrieren so das da steht kein passendes Dokument zum löschen gefunden? also das der Fehler damit aufgehoben wird.

Mach ein Scripting.FileSystemObject

Dazu musst du erst die "Microsoft Scripting Runtime" unter Komponenten (glaub ich) einschalten, dann machste ne Variable (z.B. Dim FSO as new Scripting.FileSystemObject), und fragst dann mit FSO.FileExists("Dateiname.txt") ob die Datei da ist. Die Funktion liefert TRUE oder FALSE zurück.

Ach ja, der Titel vom Thema passt iwie nicht ;)
 
Zuletzt bearbeitet:
@Bratkartoffel

könntest du mir da wieleicht denn Code dazu geben, weil ich habe erst 2 Wochen so ungefähr die Erfahrung bin aber schon bissel weit naja mit nachlesen und machen halt.

Die msgbox hatte ich ja eingebaut mit eine sleep Funktion so das die Nachricht nach 2 bis 3 sekunden nach dem das Programm gestartet wurde die msgbox Kamm.
Ich möchte aber das es in dem Textfeld rein kommt das würde auch reichen also keine msgBox sondern ein Textfeld wo das von der msgbox drin stehen würde.
Also keine msgbox aber das nach 2 - 3 sec. eine beliebige Nachricht in das dafür vorgesehen Textfeld erscheint wo ich auch die anderen Meldungen drin haben möchte.
Wie das mit der error Meldung da, was du mir ja schon erklärt hast.
 
Zuletzt bearbeitet:
Hallo ATdrag0n,

herrauszufinden zuwieviel Prozent ein Programm geladen ist, das du nicht selbst geschrieben hast, kannst du eigentlich vergessen.
Du könntest höchstens über das Handle herrausfinden ob das Programm läuft oder nicht.

Wie du überprüfen kannst ob eine Datei existiert machst du so:

Code:
Private Function FileExists(FileName As String) As Boolean
    If FileName <> "" Then
        FileExists = (Dir$(FileName) <> "")
    Else
        FileExists = False
    End If
End Function

Grüße
 
Private Declare Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Declare Sub Sleep _
Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
Private Sub aow_auto_Click(Index As Integer)
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\AOW-TS-AUTO-SWITCH.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub
Private Sub brenbot_aow_Click(Index As Integer)
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1
End Sub

Private Sub master_aow_Click(Index As Integer)
Shell "D:\Westwood\Game\AOW\RenegadeFDS\Server\RenegadeServer.exe", vbHide
End Sub
Private Sub mirc_aow_Click(Index As Integer)
Shell "D:\Westwood\Game\AOW\mIRC\mirc.exe", vbHide
End Sub
Private Sub ordner_server_Click()
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server", vbNullString, "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub
Private Sub aow_alles_Click()
Shell "D:\Westwood\Game\AOW\mIRC\mirc.exe", vbHide
aow_alles.Enabled = False
Sleep 6000
aow_alles.Enabled = True
Shell "D:\Westwood\Game\AOW\RenegadeFDS\Server\RenegadeServer.exe", vbHide
aow_alles.Enabled = False
Sleep 6000
aow_alles.Enabled = True
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1
aow_alles.Enabled = False
Sleep 6000
aow_alles.Enabled = True
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\AOW-TS-AUTO-SWITCH.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub

Das ist der code von dem programm was ich gemacht habe,
ich hatte vorher nach jedem programm start eine msgbox eingebaut die mir wieder gab das das geladen wurde, geht das auch das ich staat der msg box das in ein textfeld wieder gegeben lassen kann ?
So das da von jedem programm was gestartet wird das da drin steht wist ihr.

Und die error meldung wegen der datei das die net da ist möchte ich auch in dem textfeld haben halt nur so das er dann sagt datein nicht gefunden.

Hoffe ihr könnt mit dem queltext was anfangen.
 
ich schau mal, was ich machen kann ;)
Ach ja, du programmierst ja schon in VB6 oder? ^^ Weil mit dem ganzen .Net Schmarrn...

Und bitte formatiere nächstes mal deinen Code mit [.CODE] und [./CODE] ohne die .

€dit1: Verdammter IE, einfach weggesendet ;) Bin ja noch gar nit fertig :D

Also, ich hab hier grad kein VB, deshalb mach ich das aus dem Kopf, wenns nicht geht, musst halt schreiben.

Dim FSO as new Scripting.FileSystemObject

Code:
private Sub cmdStartProgramm1_Click()
  shell "Programm1.exe"
  txtbox.text = "Programm 1 gestartet!"
End Sub 

private sub cmdLöschen_Click()
  if fso.fileexists("a.txt") then
    kill "a.txt"
    txtbox.text = "Vorhanden - Gelöscht"
  else
    txtbox.text = "Nicht gefunden!"
  end if
end sub

So, das müsste eigentlich gehen. Du kannst auch mithilfe von Tasklist abfragen, ob das Programm noch läuft, zum Beispiel durch einen Timer.

Code:
private Sub timPrüfen_Timer()
  dim laufend as boolean

  shell "tasklist.exe>" & app.path & "\liste.txt"

  open app.path & "\liste.txt" for input as #1
    do until eof(1)
      input #1, Temp
      if instr(Temp,"<PROGRAMMNAME>")<>0 then
         laufend=true
      end if
    loop
  close #1
  
  if laufend=true then
    'Joa, Das Programm läuft ;)
  else
    'Das Programm läuft nicht (mehr)
  end if
end sub

Hoffe, ich habe dich richtig verstanden, und du kannst damit was anfangen. ;)

€dit2: Im Code was falsch geschrieben.
 
Zuletzt bearbeitet:
Ich habe hier mal mein fertiges Programm rein geladen hoffe das es euch weiter helfen kann.

Das TOOL

Da ich jetzt nicht wusste wie ich es hier hochladen kann habe ich es so gemacht.

Man der hat das ganze projekt beim letzten ändern nicht gespeichert.
Moment ich mache das letzte noch eben mit rein,
dann weist du wie die Datei aussehen die gelöscht werden.
 
Zuletzt bearbeitet:
Code:
Private Declare Function ShellExecute _
    Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Declare Sub Sleep _
    Lib "kernel32" ( _
    ByVal dwMilliseconds As Long)
Private Sub aow_auto_Click(Index As Integer)
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\AOW-TS-AUTO-SWITCH.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub
Private Sub brenbot_aow_Click(Index As Integer)
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1
End Sub
Private Sub master_aow_Click(Index As Integer)
Shell "D:\Westwood\Game\AOW\RenegadeFDS\Server\RenegadeServer.exe", vbHide
End Sub
Private Sub mirc_aow_Click(Index As Integer)
Shell "D:\Westwood\Game\AOW\mIRC\mirc.exe", vbHide
End Sub
Private Sub ordner_server_Click()
   ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server", vbNullString, "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub
Private Sub aow_alles_Click()
   Shell "D:\Westwood\Game\AOW\mIRC\mirc.exe", vbHide
   aow_alles.Enabled = False
   Sleep 6000
   aow_alles.Enabled = True
   Shell "D:\Westwood\Game\AOW\RenegadeFDS\Server\RenegadeServer.exe", vbHide
   aow_alles.Enabled = False
   Sleep 6000
   aow_alles.Enabled = True
   ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1
   aow_alles.Enabled = False
   Sleep 6000
   aow_alles.Enabled = True
   ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\AOW-TS-AUTO-SWITCH.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1
End Sub

das ist die lösch option das * muss sein weil datein auch mit zahlen dahinter geschrieben werden vonn denn programm was ich da starte.

Private Sub Command1_Click()
Kill "C:\test*.txt"
End Sub

So unten als anhang haste jetzt das tool mit der löschoption erstemal so auf die schnelle gemacht.
 

Anhänge

  • Server_Project.zip
    102,8 KB · Aufrufe: 27
Joa, wie schon gesagt, ich sitz hier in der Arbeit da habe ich kein VB6.

Aber sobald ich zu Hause bin, schau ich mir das ganze mal an.
Ach ja, was mir grad auffällt, die Sleepfunktion und die ShellExecute brauchst ja eig nicht.
Sleep lässte ganz weg, und das ShellExecute ersetzt du einfach mit Shell, z.b.:

Code:
Shell "C:\test.exe", vbhide


Kill "C:\text*.txt" meckert ja nur, wenn keine Dateien die auf das Muster passen gefunden werden können.
Ersetz das mal mit
Code:
open "c:\test123456.txt" for output as #1
close #1
kill "C:\text*.txt"

Das erstellt zuerst eine Datei, die in das Muster passt. Somit wird immer mindestens eine Datei gelöscht, und die Kill Funktion meckert nicht rum.
 
Zuletzt bearbeitet:
OK das geht,
aber schaue dir das mal an wenn du zu hause bist wegen dem Textfeld das da dann alles drin steht wie Programm gestartet und so was halt.
Bin dir jetzt schon dankbar.
Kannst ja umschreiben was dir net gefällt daran hauptsache ist ja das das dann geht. ^^

Code:
ShellExecute hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1
Das startet eine Verknüpfung da wusste ich nicht wie ich das machen konnte.

Das mit der sleep Funktion habe ich eingebaut, weil die Programme ja nicht alle aufeinmal starten sollen, weil ich habe ein butten drin wo ich alles aufeinmal starten kann.
Wenn du dir das Tool anschaust dann wirste merken worauf ich damit aus bin.
Das ganze Tool ist für ein einziegen renegade Server, der hat soviel Programme die dazu gehören deswegen habe ich das so gemacht das man die einzeln starten kann zwecks Test Sachen oder halt wenn der richtig laufen soll das wo ich dann mit ein butten die ganzen Programme starten kann deswegen ja auch die sleep Funktion, damit der das net aufeinmal alles startet.
 

Neue Beiträge

Zurück