Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Ikkunan hwnd otsikosta

Sivun loppuun

vb1235 [01.09.2006 16:38:46]

#

Miten saa selville ikkunan otsikkotekstin perusteella ko. ikkunan hwnd -arvon?

moptim [01.09.2006 16:43:04]

#

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Function PölliHwnd(AkkunanNimi As String)As Long
  PölliHwnd = FindWindow(vbNullString, AkkunanNimi)
End Function

ole hyvä

Antti Laaksonen [01.09.2006 16:58:29]

#

Tässä on toinen funktio:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Const GW_HWNDNEXT = 2

Function IkkunanKahva(teksti As String) As Long
    Dim ikkuna As Long, pituus As Long
    Dim otsikko As String * 255
    ikkuna = FindWindow(vbNullString, vbNullString)
    While ikkuna <> 0
        If GetParent(ikkuna) = 0 Then
            pituus = GetWindowText(ikkuna, otsikko, 255)
            If pituus <> 0 Then
                If Left(otsikko, pituus) = teksti Then
                    IkkunanKahva = ikkuna
                    Exit Function
                End If
            End If
        End If
        ikkuna = GetWindow(ikkuna, GW_HWNDNEXT)
    Wend
End Function

moptim [01.09.2006 17:02:05]

#

Kumpi on tehokkaampi ja nopeampi, Antti? Voisit suositella vb1235:lle sitä.

vb1235 [01.09.2006 17:11:09]

#

Kiitti, käytin tuota ensinmainittua ja sitä muokkaamalla sain homman toimimaan. Myös tuo Antin koodi näyttää erittäin hyvältä.

Antti Laaksonen [01.09.2006 17:14:01]

#

Molemmat ohjelmat toimivat niin nopeasti, että eron huomaa vasta atomikellolla.

Testasin vähän omaa ohjelmaani, ja se ainakin löysi kaikki kokeilemani ikkunat otsikon perusteella.

moptim [01.09.2006 17:42:28]

#

Minä kokeilin ottaa hwnd:n soodan sivuilta ja firefoxin Lataukset-ikkunasta. Ne kelpasivat, olivat ihan tarpeeksi epäselviä 100 000 > x < 1 000 000-lukuja.

vb1235 [02.09.2006 09:03:36]

#

Mistähän sellainen vielä johtuu että kun aktivoi ikkunan vaikka appactive tai settopmostwindow -käskyllä niin ikkuna kyllä aktivoituu alapalkissa muttei "pomppaa" esille näyttöruudulle ?

moptim [02.09.2006 09:30:57]

#

Kun ton tietäiskin... Minulla ainakin toimi, mikä VB sinulla on?

Antti Laaksonen [02.09.2006 09:41:16]

#

Tämän aiheen lopussa on kunnollinen funktio:
https://www.ohjelmointiputka.net/keskustelu/12932-fokuksen-vaihto

vb1235 [03.09.2006 16:36:52]

#

Tuo on hyvä mutta kerrohan Antti että mitä muutoksia ko. koodiin täytyy tehdä että saa asetettua ikkunan sijainnin ruudulla (esim. vasempaan yläkulmaan)?

Metabolix [03.09.2006 16:40:08]

#

Ikkunan liikuttamisessa auttaa SetWindowPos-WinAPI.

moptim [04.09.2006 18:39:42]

#

Woow, vaikuttaa kiinnostavalta :D Ja näillä h-vintti arvoilla saa tehtyä vaikka mitä hauskaa (ja ilkeätä).

kayttaja-4976 [10.09.2006 16:29:03]

#

KingOfTheWorld kirjoitti:

Woow, vaikuttaa kiinnostavalta :D Ja näillä h-vintti arvoilla saa tehtyä vaikka mitä hauskaa (ja ilkeätä).

Mutta onko se tarkoituksenmukaista? Koodarit tekevät palveluksen (hyvästä rahasta) ihmiskunnalle jotka ovat jostain synnynnäisestä virheestä johtuen koodaustaidottomia.
Ja jos käteistä ei ala näkyä, silloin joidenkin pakko sortua pahantekoon :P


Sivun alkuun

Vastaus

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

Tietoa sivustosta