プロが教えるわが家の防犯対策術!

こんにちはVB学習を始めて2週間になりました。
Webの記事などを参考にしていますがバージョンによって記述が変わって苦戦しています。
今回ご質問したい内容です。

ボタンを押すとメモ帳が起動されているか調べてそのウィンドウタイトルを得る

ウィンドウタイトルで検索してハンドルを取得してそのままそのハンドルで逆に
ウィンドウタイトルを得ています(無意味な処理ですが学習用という事で)

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String, ByVal nMaxCount As Integer) As Integer

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

Dim ECHandle As Integer
Dim Titlename As String

Titlename = vbNullString

ECHandle = FindWindow(vbNullString, "無題 - メモ帳")
GetWindowText(ECHandle, Titlename, 255)

Label5.Text = Titlename
If ECHandle = 0 Then
Label4.Text = "取得できない"
Else
Label4.Text = "取得出来た" & ECHandle & Titlename
End If

End Sub

結果はというと Titlename が空っぽのままでタイトルが取得できません
どのような原因が考えられますでしょうか?

よろしくお願いいたします。

A 回答 (2件)

VB.NETではなく旧世代VBのサンプルを使っているからです。

(Declareが出鱈目)
http://www.pinvoke.net/search.aspx?search=GetWin …

> VB学習を始めて2週間

であれば、Win APIではなく.NETの勉強をしましょう。
System.Diagnostics.Process クラスとか。
    • good
    • 0
この回答へのお礼

ご回答有難うございます
(Declareが出鱈)の一文のおかげで解決しました。

>であれば、Win APIではなく.NETの勉強をしましょう。
ごもっとも
しかしながらこれが今出されている課題なのでご質問させていただきました。

なお、以下のページを参考にしました
http://akademeia.info/index.php?VB.NET%2F%A5%C6% …

じぶんの英語スキルは酷過ぎるので教えていただいた所有名どころみたいですが
さっぱり読めませんでしたm(_ _)m

お礼日時:2011/03/25 01:47

コードの書き方に色々問題はありますが、投稿されたコードをいかして取得するなら



Titlename = vbNullString
の部分を
Titlename = New String(" "c, 255)
に変更すれば、取得することができますが、Win32 API 関数の宣言方法や
ハンドルの取得の仕方等色々問題があるので、さらに勉強された方がいいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!