Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: [.NET] AppActivate ja parametri

Sivun loppuun

jyrama [15.09.2009 21:24:36]

#

Totaalinen sekoaminen:

AppActivate(pid)

ei yksinkertaisesti toimi

ArgumentExeption debugissa
"Prosessia {0} ei löydy"

pid:ssä näkyy debugin aikana ihan oikea pid,
mutta AppActivate ei vain näytä saavan oikeata parametria...

Ideoita?

Antti Laaksonen [16.09.2009 13:09:02]

#

Näyttääkö tämä koodi oikean id:n?

MsgBox(pid)
AppActivate(pid)

jyrama [16.09.2009 15:06:54]

#

Joo toimii Messageboxin kanssa, ei ilman...
Olisi vaan outoa käyttää MsgBoxia,
kun se jo muutenkin sekoittaa ohjelman kulun tässä tapauksessa

Tässä kuitenkin kyseinen koodi, jos se vaikka yhtään auttaisi:

Dim pid As Integer = Shell("vlc.exe")
'MessageBox.Show(pid)
AppActivate(pid)
SendKeys.SendWait("f")

jyrama [16.09.2009 16:23:36]

#

Hi hii VS2008 sekoo jälleen
Insert Snippet => klikkaus tai enter => välilehti vaihtuu 'gui-editoriin'....

neau33 [16.09.2009 17:01:37]

#

Moikka jyrama!

kokeile toimisiko oheisen esimerkin malli haluamallasi tavalla

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As. System.EventArgs) Handles Button1.Click
   Shell("vlc.exe", AppWinStyle.NormalFocus)
   '(kokopolku jos ei löydy Path-asetuksista)
   SendKeys.SendWait("f")
End Sub

tässä hieman pidemmällä kaavalla toteutettuna...

Public Partial Class MainForm

   Public Sub New()

      Me.InitializeComponent()

   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As. System.EventArgs) Handles Button1.Click

       AppActivate(GetProcessId("vlc"))
       '("vlc", polku) jos ei ole Path-asetuksissa

       SendKeys.SendWait("f")

   End Sub

   Function GetProcessId(ByVal AppName As String, _
   Optional ByVal folderPath As String = "") As Integer

       Dim prosessi As Process
       Dim prosessit() As Process = Process.GetProcesses()
       For Each prosessi In prosessit
         With prosessi
            If .ProcessName.ToLower _
               = AppName.ToLower Then
               Return .id     'kokeile myös korvata...
               Exit Function '...nämä kaksi riviä
               '.Kill 'tällä rivillä
            End If
         End With
       Next

       prosessi = New Process

       With prosessi.StartInfo

          .FileName = folderPath + AppName + ".exe"
          .WindowStyle = .WindowStyle.Normal

          With prosessi
             .Start()
             .WaitForInputIdle()
             Return .id
          End With

       End With

   End Function

End Class

jyrama [16.09.2009 17:22:31]

#

eeeeeiiii toimi
Täytyy tarkistaa VLC:een parametrilista,
jos sieltä lyötyisi korvaaja f-napille
JA SetWindowText:lle joka ei myöskään toimi

neau33 [16.09.2009 18:22:48]

#

Morjen taas jyrama!

jos pyörittelet sitä VS2008 esim. Vista-alustalla niin...

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As. System.EventArgs) Handles Button1.Click

   Shell("notepad.exe", AppWinStyle.NormalFocus)
   Dim WshShell As Object = CreateObject("WScript.Shell")
   WshShell.Sendkeys("f", false)
   'WshShell.Sendkeys("%f", false) 'Alt+f
   WshShell = Nothing

End Sub

Edit: jos taas hait kometoriviparametriä niin...Shell("cmd /c vlc -f")

jyrama [16.09.2009 20:31:31]

#

Itse asiassa VLC:een parametreistä löytyi
idiootti varmat korvikeet f-napille(fullscreen)
ja SetWindowText:lle joka ei toimi (ainakaan 7:ssa) (Xp ja Vista testaamatta)

Kaiken lisäksi -f -optio korvaa AppActivaten
ja parametreistä löytyy myös korvike SetWindowText:lle
...joo sieltä löytyy myös säätöjä joita ei
koko ohjelman "asetuksista"
ja joita ei voi koko WinApi:lla edes säätää

Ohjelma toimii hyvin (ihme kyllä)
ja osaa avata automaattisesti MTV Median netti-tv:ssä
näkyvän sarjan uusimman jakson vain sarjan nimen perusteella

En voinut käyttää .NET omaa Splittiä vaan
tätä https://www.ohjelmointiputka.net/koodivinkit/23830-vb6-explode-funktio-vb-lle
Splitti ei näköjään käytä kuin yhden merkin erotinta?

Off-topic: F-Secure 2010 löysi Google Chromen sorsista viruksen?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta