Elikkäs mun pitäs selvittää jotenkin toisessa ohjelmassa olevan työkalurivin kahva. Painonapin kahva on helppo selvittää mutta työkalurivillä kun ei ole omaa otsikkoa niin sen perusteella ei pysty.
Napista kahva:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Sub Form_Load() Dim hwnd As Long, hWnd2 As Long hwnd = FindWindow(vbNullString, "Testi") hWnd2 = FindWindowEx(hwnd, 0, vbnullstring, "Painike") End Sub
Ja testiohjelmassa oli command1 jonka tekstinä oli Painike.
Kahva löytyi näin ongelmitta nappulalle ja pystyin painamaan kyseistä painiketta kutsumalla PostMessagea.
Toolbarin kahvan (ja siitä mahdollisesti tietyn painikkeen kahvan) selvittäminen onkin sitten toinen juttu. Olen googlettanut koko päivän löytämättä toimivaa ratkaisua.
No jos tiedät esimerkiksi sen sijainnin, niin ko. kohdasta haet päälimäisen ikkunan? Aika vaikeaa tuohon on mitään yleisneuvoa antaa. Jossakin ohjelmassa voi olla jokaisella toolbarin painikkeella oma ikkuna, jollakin koko toolbar on vain yksi ikkuna. Ja mitä itse katsoin esimerkiksi Firefoxia, niin kaikki ikkunat näytti olevan nimeltään "" ja tyypiltään MozillaWindowClass. Eli ei pahemmin nimellä haeta.
VB6:ssa näyttäisi toolbarin tyyppi olevan "Toolbar20WndClass", mutta napeille kyseiseesä palkissa ei näytä olevan omaa kahvaa... täytynee yrittää keksiä jotain.
Jos kummatkin ohjelmat ovat omia, niin on parasta tallentaa tarvittu kahva tiedostoon.
Voi kun oliskin omia :)
Hankalaks menee kyl...
Aihe on jo aika vanha, joten et voi enää vastata siihen.