Witam, od jakiegoś czasu próbuje swoich sił w Visual Basic 2010. Napotkałem na następujący problem tzn. potrzebuje po kliknięciu na przycisk w moim programie otworzyć plik pdf i po jego otwarciu wysłać do niego odpowiednia kombinację klawiszy następnie otworzyć kolejny pdf i do niego wysłać kombinację klawiszy itd.
Robię to w taki sposób
Shell(TUTAJ_LOKALIZACJA_PDF1)
SendKeys.Send(TUTAJ_KOMBINACJA_KLAWISZY)
Shell(TUTAJ_LOKALIZACJA_PDF2)
SendKeys.Send(TUTAJ_KOMBINACJA_KLAWISZY)
Shell(TUTAJ_LOKALIZACJA_PDF3)
SendKeys.Send(TUTAJ_KOMBINACJA_KLAWISZY)
Ale pojawia się taki problem ze program wywołuje otwarcie PDF ale nie czeka aż on się otworzy tylko przechodzi tzn wymusza wciśniecie klawiszy i otwiera kolejny pdf.
Czy istnieje jakaś komenda żeby przed przejściem dalej program czekał aż plik pdf się uruchomi?
Najpierw potrzebujesz warunek czy okno już się pojawiło, np.: FindWindowByCaption, a potem AppActivate(“Nazwa okna aplikacji”) i dopiero przesyłasz kombinację klawiszy.
Private Declare Function FindWindowByCaption Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Integer
Dim plik_otwarty As Boolean
plik_otwarty = False
Process.Start("calc.exe")
While (plik_otwarty <> True)
If (FindWindowByCaption(vbNullString, "Kalkulator") <> 0) Then
System.Threading.Thread.Sleep(1000)
AppActivate("Kalkulator")
SendKeys.Send("5")
SendKeys.Send("*")
SendKeys.Send("2")
SendKeys.Send("=")
plik_otwarty = True
End If
End While
Dzięki wielkie - pomogło Ale mam jeszcze jedno pytanie jak można pobrać automatycznie “nazwę” okna która wpisuje do FindWindowByCaption i AppActivate bo za każdym razem będzie to inny plik (wybierany przez użytkowanika)?
Próbowałem za pomocą OpenFileDialog1.SafeFileName ale w przypadku pdfa o nazwie “1” zwraca 1.pdf a nie pełną nazwę tzn 1.pdf - Adobe Reader