Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12495 / 13645 ツリー ←次へ | 前へ→

【10136】ウインドウネームを取得できますか? EMU 04/1/8(木) 16:57 質問
【10138】Re:ウインドウネームを取得できますか? Seraph 04/1/8(木) 17:27 回答
【10141】Re:ウインドウネームを取得できますか? EMU 04/1/8(木) 18:32 質問
【10143】Re:ウインドウネームを取得できますか? Seraph 04/1/8(木) 20:21 回答
【10153】Re:ウインドウネームを取得できますか? EMU 04/1/9(金) 9:55 質問
【10172】Re:ウインドウネームを取得できますか? Seraph 04/1/9(金) 14:48 回答
【10180】Re:ウインドウネームを取得できますか? EMU 04/1/9(金) 17:17 質問
【10185】Re:ウインドウネームを取得できますか? Kein 04/1/9(金) 19:24 回答
【10193】Re:ウインドウネームを取得できますか? EMU 04/1/10(土) 17:46 質問
【10195】Re:ウインドウネームを取得できますか? kein 04/1/10(土) 21:19 回答
【10222】Re:ウインドウネームを取得できますか? EMU 04/1/13(火) 12:22 質問
【10223】Re:ウインドウネームを取得できますか? kein 04/1/13(火) 12:34 回答
【10224】Re:ウインドウネームを取得できますか? EMU 04/1/13(火) 13:45 お礼
【10186】Re:ウインドウネームを取得できますか? Seraph 04/1/9(金) 20:02 回答
【10194】Re:ウインドウネームを取得できますか? EMU 04/1/10(土) 18:35 お礼

【10136】ウインドウネームを取得できますか?
質問  EMU  - 04/1/8(木) 16:57 -

引用なし
パスワード
   あけましておめでとうございます。
昨年はお世話になりました。今年もどうかよろしくお願いします。
早速ですが質問させてください。

ウィンドウズ上で複数の窓が開いている状態で、
それらすべての名前を取得することができますか?
たとえば

Windows(AAA).Activate

の「AAA]にあたる部分の名前を全て変数に取得したいのですが。
エクセルのA列に書き出すようにくめませんか?

【10138】Re:ウインドウネームを取得できますか?
回答  Seraph  - 04/1/8(木) 17:27 -

引用なし
パスワード
   ▼EMU さん:

質問の趣旨と違ってたらゴメンナサイ

>ウィンドウズ上で複数の窓が開いている状態で、
>それらすべての名前を取得することができますか?
>たとえば
>Windows(AAA).Activate
>の「AAA]にあたる部分の名前を全て変数に取得したいのですが。

これについては、以下のコードを標準モジュールに貼り付けて
イミディエイトウィンドウから実行してみてください。

'開いているウィンドウ名を列記するマクロ
Public Sub tst3()
Dim obj As Object
  For Each obj In Windows
    Debug.Print obj.Caption
  Next
End Sub

これで名前が全て取得できるはずです。

【10141】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/8(木) 18:32 -

引用なし
パスワード
   ▼Seraphさん 早速のご返答ありがとうございます:
>
>質問の趣旨と違ってたらゴメンナサイ
私のほうこそ、質問の仕方がいたらなくて申し訳ありません。

>
>>ウィンドウズ上で複数の窓が開いている状態で、
>>それらすべての名前を取得することができますか?
>>たとえば
>>Windows(AAA).Activate
>>の「AAA]にあたる部分の名前を全て変数に取得したいのですが。
>
>これについては、以下のコードを標準モジュールに貼り付けて
>イミディエイトウィンドウから実行してみてください。
忙しい中、コードまで作成いただきありがとうございます。

>'開いているウィンドウ名を列記するマクロ
>Public Sub tst3()
>Dim obj As Object
>  For Each obj In Windows
>    Debug.Print obj.Caption
>  Next
>End Sub
>

それで、上記のコードを試したところ
アクティブなウインドウ名だけしか取得されなかったのですが
私の環境がまずいのですか?
(エクセル2000を使用しております)

【10143】Re:ウインドウネームを取得できますか?
回答  Seraph  - 04/1/8(木) 20:21 -

引用なし
パスワード
   ▼EMU さん:

私も2000です。

もしかしたら、OSレベルでのウィンドウ名でしょうか?
その場合は、APIを使う方法しか思いつきません。
#GetWindowText()とか、、、

>それで、上記のコードを試したところ
>アクティブなウインドウ名だけしか取得されなかったのですが

うーん、、、
全て表示されるハズ、、、

私のほうで試した手順はこうです。
#前段のサンプルコードとは少し違いますが、、、
#こんなんでどうでしょう? (^^;

1,Book1、Book2 というWorkBookを新規作成し同時に開いた状態にする。
 (どちらがアクティブでもよい)

2,Book1のシート上にフォームツールバーからボタンを配置します。
 この時マクロの登録ダイアログで「新規作成」をクリック

3,標準モジュールで以下のようにコードを記述

Sub ボタン1_Click()
Dim i%
  For i% = 1 To Windows.Count
    Sheets("Sheet1").Cells(i%, 1) = Windows(i%).Caption
  Next
End Sub

4,シート上のボタンをクリック
 セルに、
 Book1
 Book2
 と表示(されるはず)。

5,ブックの保護やウィンドウを非表示にしても結果は同じでした。

>私の環境がまずいのですか?

上記手順でも表示されない場合は設定や環境の影響があるかもしれませんが、
その可能性はほとんど無いと思いますよ。

【10153】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/9(金) 9:55 -

引用なし
パスワード
   ▼Seraphさんたびたびもうしわけありません。
>私も2000です。
>
>もしかしたら、OSレベルでのウィンドウ名でしょうか?
>その場合は、APIを使う方法しか思いつきません。
>#GetWindowText()とか、、、

私の不勉強のせいで、
「OSレベルでのウィンドウ名」というのがどういうものをさしているのか
わからないのですが、
名前を取りたいのは、ウィンドウズ上のツールバーに表示されている
フォルダー名やアプリケーション名に付随している名前です。
(たとえば、「新しいフォルダ」や「Book1」や「AAAA.TXT」といったものです)


>私のほうで試した手順はこうです。
>#前段のサンプルコードとは少し違いますが、、、
>#こんなんでどうでしょう? (^^;
>
>1,Book1、Book2 というWorkBookを新規作成し同時に開いた状態にする。
> (どちらがアクティブでもよい)
>
>2,Book1のシート上にフォームツールバーからボタンを配置します。
> この時マクロの登録ダイアログで「新規作成」をクリック
>
>3,標準モジュールで以下のようにコードを記述
>
>Sub ボタン1_Click()
>Dim i%
>  For i% = 1 To Windows.Count
>    Sheets("Sheet1").Cells(i%, 1) = Windows(i%).Caption
>  Next
>End Sub
>
>4,シート上のボタンをクリック
> セルに、
> Book1
> Book2
> と表示(されるはず)。
>
>5,ブックの保護やウィンドウを非表示にしても結果は同じでした。
>
上記の手順でおこなった結果、エクセル上のものは取れたのですが
やはり、フォルダー名などはとれませんでした。
私の質問の仕方がまずかったみたいです。
すいませんでした。

【10172】Re:ウインドウネームを取得できますか?
回答  Seraph  - 04/1/9(金) 14:48 -

引用なし
パスワード
   ▼EMU さん こんにちは

>名前を取りたいのは、ウィンドウズ上のツールバーに表示されている
>フォルダー名やアプリケーション名に付随している名前です。
>(たとえば、「新しいフォルダ」や「Book1」や「AAAA.TXT」といったものです)

なるほど!
と、言う事は、「Excel VBA質問箱 IV - Microsoft Internet Explorer」も
取得したいと言う事ですね?

それなら以下のコードを試してみてください。

'<<ここから>>
'**************************************************************************
' API宣言
'**************************************************************************
Public Declare Function EnumWindows Lib "user32" _
  (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" _
  (ByVal hWnd As Long) As Long
Public Declare Function GetClassName Lib "user32" _
  Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
'Public Declare Function GetWindowPlacement Lib "user32" _
'  (ByVal hWnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Public Declare Function GetWindowText Lib "user32" _
  Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindow Lib "user32" _
  (ByVal hWnd As Long, ByVal wCmd As Long) As Long

'**************************************************************************
' 定数宣言
'**************************************************************************
'GetWindowで使用
Public Const GW_OWNER = 4&

'**************************************************************************
' ローカル変数宣言
'**************************************************************************
Private gintRow%    'セルの行
Private gintCol%    'セルの列

'**************************************************************************
' マクロ
'**************************************************************************
Sub ボタン1_Click()
  gintRow% = 0: gintCol% = 1
  Call EnumWindows(AddressOf EnumWindowsCallBack, 0&)
End Sub

'==========================================================================
' Function : EnumWindows()のコールバック関数
' Calling  : Boolean = EnumWindowsCallBack( ByVal Long1, ByRef Long2 )
' Parameters: Long1 = ウィンドウへのハンドル
'      : Long2 = パラメータ
' Return  : True
' Note   :
'==========================================================================
Public Function EnumWindowsCallBack( _
          ByVal phWnd As Long, _
          ByRef plngParameter As Long _
        ) As Boolean
Dim strWindowName  As String * 128   'ウィンドウ名
Dim strClassName  As String * 128   'クラス名
Dim lngResult    As Long       'GetWindowText()の戻り値

  '戻り値、変数初期化
  EnumWindowsCallBack = False
  strWindowName = ""
  strClassName = ""
  lngResult = 0&
  
  'ウィンドウ名取得
  lngResult = GetWindowText(phWnd, strWindowName, Len(strWindowName))
  
  'クラス名取得
  Call GetClassName(phWnd, strClassName, Len(strClassName))

  '見えているウィンドウだけ選ぶ
  If (IsWindowVisible(phWnd)) _
  And (GetWindow(phWnd, GW_OWNER) = 0) _
  And (lngResult <> 0) _
  And (Left(strClassName, 7) <> "Progman") Then
    '行のインクリメント
    gintRow% = gintRow% + 1

    'セルにウィンドウ名をセット
    '↓ここのところを好きなように直して使ってください
    Sheets("Sheet1").Cells(gintRow%, gintCol%) = strWindowName

  End If
  
  '戻り値に True をセット
  EnumWindowsCallBack = True

End Function

'<<ここまで>>

【10180】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/9(金) 17:17 -

引用なし
パスワード
   ▼Seraphさん、こんばんわ。たびたび恐れ入ります。

>なるほど!
>と、言う事は、「Excel VBA質問箱 IV - Microsoft Internet Explorer」も
>取得したいと言う事ですね?

まさに、そのとおりです。お手数をかけさせてすいません。

>
>それなら以下のコードを試してみてください。
>
>'<<ここから>>

(中略)

>'<<ここまで>>

返信が長くなるのでコードは略させていただきましたが、
おかげさまで希望どおりウインドウの名前が取得できました。
ありがとうございます。

ただ、この処理を使ってしようと思っていた後続処理ができないので
併せて質問をさせてください。
その処理とは、他でもなく取得したウインドウ名でアクティブウインドウを
変更するというものでした。

つまり

〜上記の処理でウインドウ名取得〜
Windows(strWindowName).Activate

とすれば、アクティブウインドウを変更できると考えていたのですが、
「実行時エラー’9’
 インデックスが有効範囲にありません。」
とメッセージが出てきてしまいます。
どうしたらよいかおしえていただけませんか?

【10185】Re:ウインドウネームを取得できますか?
回答  Kein  - 04/1/9(金) 19:24 -

引用なし
パスワード
   OSの処理ですから、Excelのコードでは及びません。全てAPIの処理になります。
例えばどんなウィンドウを開いていても IE を見つけて前面に出す、という
ことなら

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _
lPalam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
As Long
Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long

Sub MyWindow_SetFront()
  Dim Ret As Long

  Ret = EnumWindows(AddressOf Rekkyo, 0)
End Sub


Public Function Rekkyo(ByVal Handle As Long) As Boolean
  Dim Ret As Long, Leng As Long, hWnd As Long
  Dim Name As String

  Name = String(255, ChR(0))
  Leng = Len(Name)
  Ret = GetWindowText(Handle, Name, Leng)
  If Ret <> 0 Then
    If Name Like "*Microsoft Internet Explorer*" Then
     hWnd = FindWindow(vbNullString, Name)
     SetForegroundWindow hWnd
     If IsIconic(hWnd) Then OpenIcon hWnd
     Exit Function
    End If
  End If
  Rekkyo = True
End Function

こんな感じになります。MyWindow_SetFront を実行してみて下さい。
なお、IE ならもう少し簡単に・・

Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
As Long
Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long

Sub IE_SetFront()
  Dim MyShell As Object, MyWindow As Object, objIE As Object
  Dim hWnd As Long

  Set MyShell= CreateObject("Shell.Application")
  For Each MyWindow In MyShell.Windows
   If TypeName(MyWindow.document) = "HTMLDocument" Then
     Set objIE = MyWindow: Exit For
   End If
  Next
  If Not objIE Is Nothing Then
   hWnd = objIE.hwnd
   SetForegroundWindow hWnd
   If IsIconic(hWnd) Then OpenIcon hWnd
  End If
  Set objIE = Nothing: Set MyShell = Nothing
End Sub

でも出来ますが。

【10186】Re:ウインドウネームを取得できますか?
回答  Seraph  - 04/1/9(金) 20:02 -

引用なし
パスワード
   ▼EMU さん:

>▼Seraphさん、こんばんわ。たびたび恐れ入ります。
どもども

最初に説明しておけばよかったのかもしれませんが、、、

>〜上記の処理でウインドウ名取得〜
>Windows(strWindowName).Activate
>
>とすれば、アクティブウインドウを変更できると考えていたのですが、
>「実行時エラー’9’
> インデックスが有効範囲にありません。」
>とメッセージが出てきてしまいます。
>どうしたらよいかおしえていただけませんか?

Windows(strWindowName).Activate で、Excel以外のウィンドウを
イジる事は出来ません。
このコードを、長く書くと

Excel.Application.Windows(strWindowName).Activate

となります。
つまり、Excel内のウィンドウを指し示しているのです。

なので、strWindowNameの内容がWindowsコレクション内のどのWindowオブジェクト
にも名前が一致しません。
で、エラーとなって「インデックスが有効範囲にありません。」と言うメッセージが
出るのです。

従って、ご希望の処理を行うには、先のコードで取得したウィンドウハンドルを引数
にしてAPIの SetForegroundWindow()関数 を呼出すのが良いと思います。

【10193】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/10(土) 17:46 -

引用なし
パスワード
   ▼Keinどうもありがとうございます。
>OSの処理ですから、Excelのコードでは及びません。全てAPIの処理になります。
そういうことなのですね、どうもありがとうございます

>例えばどんなウィンドウを開いていても IE を見つけて前面に出す、という
>ことなら
>
>Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _
>lPalam As Long) As Long
>Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
>(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
>Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
>(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
>Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
>As Long
>Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
>Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long
>
>Sub MyWindow_SetFront()
>  Dim Ret As Long
>
>  Ret = EnumWindows(AddressOf Rekkyo, 0)
>End Sub
>
>
>Public Function Rekkyo(ByVal Handle As Long) As Boolean
>  Dim Ret As Long, Leng As Long, hWnd As Long
>  Dim Name As String
>
>  Name = String(255, ChR(0))
>  Leng = Len(Name)
>  Ret = GetWindowText(Handle, Name, Leng)
>  If Ret <> 0 Then
>    If Name Like "*Microsoft Internet Explorer*" Then
>     hWnd = FindWindow(vbNullString, Name)
>     SetForegroundWindow hWnd
>     If IsIconic(hWnd) Then OpenIcon hWnd
>     Exit Function
>    End If
>  End If
>  Rekkyo = True
>End Function

上記のコード意味がよくわかりませんが(申し訳ありません)、
とりあえず試してみました。
すると
「実行時エラー’49’
 DLLが正しく呼び出せません」
とエラーメッセージが出力されてしまいました。どうしたらよろしいでしょうか?
それと併わせて、IEいがいの場合は
"*Microsoft Internet Explorer*"
の部分を他のアプリケーションの名前に変えればよろしいのですか?教えてください。


>
>こんな感じになります。MyWindow_SetFront を実行してみて下さい。
>なお、IE ならもう少し簡単に・・
>
>Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
>As Long
>Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
>Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long
>
>Sub IE_SetFront()
>  Dim MyShell As Object, MyWindow As Object, objIE As Object
>  Dim hWnd As Long
>
>  Set MyShell= CreateObject("Shell.Application")
>  For Each MyWindow In MyShell.Windows
>   If TypeName(MyWindow.document) = "HTMLDocument" Then
>     Set objIE = MyWindow: Exit For
>   End If
>  Next
>  If Not objIE Is Nothing Then
>   hWnd = objIE.hwnd
>   SetForegroundWindow hWnd
>   If IsIconic(hWnd) Then OpenIcon hWnd
>  End If
>  Set objIE = Nothing: Set MyShell = Nothing
>End Sub
>
>でも出来ますが。

はい、こちらはエラーも出ず動作いたしました。ありがとうございます。

【10194】Re:ウインドウネームを取得できますか?
お礼  EMU  - 04/1/10(土) 18:35 -

引用なし
パスワード
   ▼Seraphさんまたまたありがとうございます。

>最初に説明しておけばよかったのかもしれませんが、、、
>
>>〜上記の処理でウインドウ名取得〜
>>Windows(strWindowName).Activate
>>
>>とすれば、アクティブウインドウを変更できると考えていたのですが、
>>「実行時エラー’9’
>> インデックスが有効範囲にありません。」
>>とメッセージが出てきてしまいます。
>>どうしたらよいかおしえていただけませんか?
>
>Windows(strWindowName).Activate で、Excel以外のウィンドウを
>イジる事は出来ません。
>このコードを、長く書くと
>
>Excel.Application.Windows(strWindowName).Activate
>
>となります。
>つまり、Excel内のウィンドウを指し示しているのです。
>
>なので、strWindowNameの内容がWindowsコレクション内のどのWindowオブジェクト
>にも名前が一致しません。
>で、エラーとなって「インデックスが有効範囲にありません。」と言うメッセージが
>出るのです。

なるほど、丁寧にご教授していただき本当にありがとうございます。

>
>従って、ご希望の処理を行うには、先のコードで取得したウィンドウハンドルを引数
>にしてAPIの SetForegroundWindow()関数 を呼出すのが良いと思います。

APIはまったく知らなかったので勉強になります。
ありがとうございました。
これにお気を悪くなさらずにまた教えてください。

【10195】Re:ウインドウネームを取得できますか?
回答  kein  - 04/1/10(土) 21:19 -

引用なし
パスワード
   >エラーメッセージが出力
どこに出てますか ? たぶん、Declare〜 のどこかだと思いますが、ひょっとして
コピペするときに引数を囲む括弧が、余分に追加されちゃってませんか ?

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
()(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
↑ここの部分のようにです。
私もそうなった経験があるのですが、もしこれが追加されていたら消して下さい。

>他のアプリケーションの名前に変えればよろしいのですか
そのとうりです。もしタイトルバーの文字列が完全に固定しているのなら、
それを使って hWnd = FindWindow(vbNullString, タイトルバーの文字列)
のようにしてウィンドウハンドルが得られますが、たいてい固定した部分とそうで
ない部分とが合体しているはずなので、先のように固定した部分を Like演算子で
判定することになります。例えばメモ帳なら

If Name Like "*メモ帳*" Then

とすればいいのです。なお変数名に使った Name は、Excelのオブジェクトや
プロパティに存在しているので、ちょっと変更して全て WName などとしておいて
下さい。

Dim WName As String

WName = String(255, ChR(0))
Leng = Len(WName)
Ret = GetWindowText(Handle, WName, Leng)

If WName Like "*Microsoft Internet Explorer*" Then
 hWnd = FindWindow(vbNullString, WName)

の、6ヶ所あります。

【10222】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/13(火) 12:22 -

引用なし
パスワード
   ▼keinさん、返信が遅れもうしわけありません。
連休で出かけインターネットに繋げなくなると書き漏らしました。
ご容赦ください。

>>エラーメッセージが出力
>どこに出てますか ? たぶん、Declare〜 のどこかだと思いますが、ひょっとして
>コピペするときに引数を囲む括弧が、余分に追加されちゃってませんか ?
>
>Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
>()(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
>↑ここの部分のようにです。
>私もそうなった経験があるのですが、もしこれが追加されていたら消して下さい。

上記のご指摘個所は大丈夫でした。
エラーメッセージは
「Ret = EnumWindows(AddressOf Rekkyo, 0)」
 の個所にでます。
>
>>他のアプリケーションの名前に変えればよろしいのですか
>そのとうりです。もしタイトルバーの文字列が完全に固定しているのなら、
>それを使って hWnd = FindWindow(vbNullString, タイトルバーの文字列)
>のようにしてウィンドウハンドルが得られますが、たいてい固定した部分とそうで
>ない部分とが合体しているはずなので、先のように固定した部分を Like演算子で
>判定することになります。例えばメモ帳なら
>
>If Name Like "*メモ帳*" Then
>
>とすればいいのです。

これは、できました。ありがとうございます。

なお変数名に使った Name は、Excelのオブジェクトや
>プロパティに存在しているので、ちょっと変更して全て WName などとしておいて
>下さい。
>
丁寧にありがとうございます。変更しました。

【10223】Re:ウインドウネームを取得できますか?
回答  kein  - 04/1/13(火) 12:34 -

引用なし
パスワード
   >「Ret = EnumWindows(AddressOf Rekkyo, 0)」
> の個所にでます。
おかしいですね。こちらではエラーになりませんが・・。
ならば、先に回答してくれている方の書き方でうまくいっているようなので、

Sub WindName_Get()
  Call EnumWindows(AddressOf Rekkyo, 0)
End Sub

というようにしてみて下さい。これもこちらでは問題ありませんでしたが。

【10224】Re:ウインドウネームを取得できますか?
お礼  EMU  - 04/1/13(火) 13:45 -

引用なし
パスワード
   ▼keinさん早速の回答ありがとうございます。:
>>「Ret = EnumWindows(AddressOf Rekkyo, 0)」
>> の個所にでます。
>おかしいですね。こちらではエラーになりませんが・・。
>ならば、先に回答してくれている方の書き方でうまくいっているようなので、

DLLエラーなのでどうしてきているかわかりませんが下記の変更でうまく動きました。
(どうしてエラーになったのかは、わからないままですが)

>
>Sub WindName_Get()
>  Call EnumWindows(AddressOf Rekkyo, 0)
>End Sub
>
>というようにしてみて下さい。これもこちらでは問題ありませんでしたが。

長々と質問を繰り返してしまいましたが、
それにもかかわらずご教授いただき本当にありがとうございました。

12495 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free