Mitenkäs on, kun VB:llä yritän etsiä FindWindow-apifunktiolla jotain kahvaa omaan käyttöön :) mutta sellanen perinteinen:
'jätetään se declare-rouvi pois my_hWnd = FindWindow(Null, "Project1")
Ja sitten kun sitä suorittaa - VB jysäyttää jämäkän virheen, mikä ilmeisesti koskee sitä, että Null ei kelpaa, kun pitäisi olla stringi.. kokeilin myös CStr(Null) mutta noin tökerö ratkaisukaan ei auttanut .. miten siis toimia?
Kokeileppa noin...
my_mWnd = FindWindow("Project1", vbNullString)
Eipä toimi, ei... haarmi
Kylläsen pitäisi toimia noin, ainakin minä saan sen toimimaan...
Mutta miks se palauttaa hWnd:n arvona nollan ? Tässäpä koodia:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub cmdFindWindow_Click() Dim MyhWnd As Long MyhWnd = FindWindow(vbNullString, "Project1") lbl_hWnd.Caption = MyhWnd End Sub Private Sub Form_Load() lbl_hWnd.Caption = Me.hWnd End Sub Private Sub lbl_hWnd_Change() If lbl_hWnd.Caption = Me.hWnd Then lblInfo.Caption = "My window's hWnd:" Else lblInfo.Caption = "Window's hWnd:" End If End Sub
Ja kun tossa yhellä rivillä (FindWindow(vbNullString, "Project1")) on nuo toisin päin, osiksi sen takia, että tää sorsa sekoili aika pahasti.. ;)
Tuo toimii minulla ainakin aivan oikein.
No tuohan toimii ihan hyvin, ja kuten voi koodista päätellä, se heittää labeliin löytyvän hWnd-luvun, mutta vain oman ikkunan (me.hwnd) se tunnistaa, muista tulee 0.. :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.