Hilfe bei Visual Basic Programmierung

Hallo,

Ich bräuchte mal ein wenig Hilfe.

Ich habe ein Programm geschrieben bei dessen start ein anderes automatisch mitgestartet wird.
soweit so gut.
nun soll das gestartete programm aber nicht minimiert erscheinen sondern direkt in maximaler größe.

Hier mal der code des programms:

Public Class Röntgen

Private Declare Function Inp Lib „inpout32.dll“ _
Alias „Inp32“ (ByVal PortAddress As Integer) As Integer
Private Declare Sub Out Lib „inpout32.dll“ _
Alias „Out32“ (ByVal PortAddress As Integer, ByVal Value As Integer) 'die 4 zeilen implementieren die inpout32.dll

Const WriteAdr = &H378
’ eingabe der adresse des ports und der befehl write für schreiben bzw rausgeben

Private Sub Röntgen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Shell(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“)

cbKameras.Checked = True

End Sub

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbKameras.CheckedChanged

If cbKameras.Checked = True Then Out(WriteAdr, 1)

End Sub

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbRöntgenfreigabe.CheckedChanged

If cbRöntgenfreigabe.Checked = True Then Out(WriteAdr, 5)
If cbRöntgenfreigabe.Checked = False Then Out(WriteAdr, 1)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRöntgenstrahlfreigabe.Click

cbRöntgenfreigabe.Checked = True
timRöntgenwarnung.Enabled = True

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRöntgenstrahlsperren.Click

cbRöntgenfreigabe.Checked = False

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timRöntgenwarnung.Tick

If cbRöntgenfreigabe.Checked = True Then pbRöntgenwarnung.Visible = True

End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles msgInfos.Click

MsgBox(„Programmversion: 2010.05.19“ & vbCrLf & „“ & vbCrLf & „Bastian Jülich“ & vbCrLf & _
„IFF-8 Mikrostrukturforschung“ & vbCrLf & „E-mail: [email protected]“ & vbCrLf & „Tel: 02461-616674“, MsgBoxStyle.OkOnly, „Zurück“)

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBeenden.Click

Me.Close()
Out(WriteAdr, 0)

End Sub

End Class

wichtig ertmal die shell funktion, kann ich in dieser zeile irgendwie angeben das das zu startende programm in max größe starten soll?

wäre über antworten sehr erfreut.

beste grüße und vielen dank

bastian

Hi,

Der Shell-Befehl ist so aufgebaut: Shell(pathname[,windowstyle])
Heißt also, dass man nach dem Komma einen „windowstyle“ angeben kann. In Ihren Fall müsste dieser dann „vbMaximizedFocus“ lauten.
Die gesamte Zeile sieht dann also so aus:
Shell(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“, vbMaximizedFocus)

Gruß renner96

PS: die 96 dahinter steht für 1996 :smile:

Hallo Bastian,
erst einmal vielen dank, dass du mich als experten hinzugefügt hast.
Leider jann ich dir bei deiem problem nich weiterhelfen.
Gruss, daniel

Hallo, ich nochmal…
mir ist gerade aufgefallen, dass man sich nicht nur auf Google-Suchergebnisse verlassen darf. Allerdings war meine Antwort gar nicht so falsch, da Ihnen IntelliSense zeigt, was man einsetzten kann, sobald Sie das Komma setzten. Wer Englisch versteht findet den richtigen AppWinStyle

Gruß renner96

PS: Sorry für die falsche Antwort

Hallo,
der Shell-Funktion kannst du als 2. Parameter die entspr. Einstellung mit übergeben, z.B. „MaximizedFocus“ etc.

Hallo,

vielen dank für die schnellen hilfen, funktioniert perfekt!!

hab dann noch ein kleines problem und zwar würde ich gerne wissen wie oder ob es möglich ist mit beenden meines programms das geöffnete programm gleich mit zu schließen.

also schonmal danke

gruß bastian

Keine Ahnung, sorry

Am besten verwendest du zum Starten von Programmen nicht Shell, dafür gibt es eine eigene Klasse. Schau dir am besten mal das hier an, ich denke, damit wirst du recht schnell klar kommen:
http://msdn.microsoft.com/de-de/library/bb979076.aspx

Wünsche dir noch viel Spaß beim Programmieren!

grüssse
w.

Versuchen’s mal mit

Shell(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“, AppWinStyle.MaximizedFocus)

Soweit ich weiß, erlaubt das Shell-Kommando einen zweiten Parameter. Dieser sollte für den maximierten Modus vbMaximizedFocus sein.
also
Shell(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“, AppWinStyle.MaximizedFocus)

Für weitere Informationen zur Shell-Funktion kannst du hier nachlesen:
http://msdn.microsoft.com/de-de/library/xe736fyk%28v…

Da du aber auch .Net als Tag hinzugefügt hast, weise ich dich auf eine mit .Net neu hinzu gekommene Möglichkeit, Programme und Dateien einfach aufzurufen und von deinem Programm aus zu steuern, hin.
Es gibt nun das Process-Objekt:

Dim p As New Process
p.StartInfo.FileName = „C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“
p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
p.Start()

Das sieht zugegebenermaßen in diesem Bezug etwas mehr aus als der Shell-Befehl, jedoch soll diese Möglichkeit schneller funktionieren, nicht mehr von der Windows-Shell abhängen und du hast eine Menge an zusätzlichen Optionen was Start, Analyse und Kontrolle des gestarteten Programm angeht.

Melde dich ruhig, wenn du weitere Fragen hast!

mit freundlichen Grüßen
Julian

Hallo,
das ist möglich.

Jedoch nicht mit der Funktion Shell, sondern durch die Funktion: ShellExecute

Dein Aufruf mit der Shell:
Shell(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“)

Aufruf durch ShellExecute
ShellExecute(„C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“,open,@SW_MAXIMIZE )

Du kannst dir hier die Funktionsreferenz von Shellexecute ansehen:
http://www.autoit.de/dokumentation_aktuell/functions…

Bis dann

ips

Hi,

also die shellexecute funktioniert nicht der erkennt den befehl garbnicht an.
Aber hab mir die sache durchgelesen und das wäre genau der befehl den ich bräuchte da ich euch das arbeitsverzeichniss von dem programm welches ich öffnen muß angeben muß.

gibt es da noch ne andere möglichkeit.

vielen dank schonmal

gruß
bastian

Hallo,
du arbeitest mit VB6? / Windows Version?
Welche Fehlermeldung bringt das Programm?
Du kannst einen Rückgabewert abfragen - welchen Rückgabewert bekommst du zurück?
Ich arbeite immer mit dem Befehl shellexecute - und hatte noch nie Probleme.

Viel Spass

Gruss
ips

hey, sorry habs selbst gemerkt ich arbeite mit vb 2008 und der shellexecute ist ein vb06 befehl.

ich habs gerade mit der process funktion ausprobiert und es scheint zu funktionieren zumindest am büro pc.
lauf jetzt mal ins labor und teste wenn das nicht funst werd ich mich nochmal melden.

vielen dank für die sehr schnelle antwort

beste grüße bastian