VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 アプリケーション(自・他)関係のメニュー
1.VB上から他の実行可能プログラム(EXE)を起動する
2.指定のウィンドウを常に手前に表示する(フォームを最前面に表示)
3.関連付けられたアプリケーションでファイルを開く
4.他のアプリのウィンドウを操作(最小化・元のサイズ・終了他)する
5. 他のEXEのハンドルを取得しVBから終了する
6.Shell関数で起動したプログラムの終了を待つ
7.アクティブウィンドウのキャプションタイトルを取得する
8.アクティブウィンドウにキーストロークを渡す
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


7.アクティブウィンドウのキャプションタイトルを取得する
1.アクティブウィンドウのキャプションタイトルを取得する
2.
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:MyWaitDll
使用 API:GetWindowText 
GetForegroundWindow SetWindowPos
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.アクティブウィンドウのキャプションタイトルを取得する(SampleNo=128)   2002.04.07
Option Explicit  

'ウィンドウのキャプションタイトルを取得する(P92)
Private Declare Function GetWindowText Lib "user32" _
  Alias "GetWindowTextA" (ByVal hwnd As Long, _
  ByVal lpString As String, ByVal cch As Long) As Long
'フォアグランドウィンドウのハンドルを取得する(P86)
Private Declare Function GetForegroundWindow Lib "user32" () As Long

'===============================================================
'指定のウィンドウのサイズ、位置、Zオーダーを設定する(P100)
Private Declare Function SetWindowPos Lib "user32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = (-1) 'ウィンドウリストの一番上に配置する
Private Const HWND_BOTTOM = (1)  'ウィンドウ表示リストの最後に置く
Private Const SWP_NOSIZE = &H1&  'ウィンドウの現在のサイズを保持する
Private Const SWP_NOMOVE = &H2&  'ウィンドウの現在位置を保持する
'===============================================================

Private Sub Command1_Click()
  Dim AWhwnd  As Long
  Dim lpString As String * 255
  Dim lngResult As Long
  'このウィンドウをウィンドウ表示リストの最後に置く
  lngResult = SetWindowPos(Me.hwnd, HWND_BOTTOM _
             , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
  Text1.Text = ""
  Wait 3000          '3秒後に実施 指定時間待つ、待機関数 を参照
  AWhwnd = GetForegroundWindow  'ハンドルを取得
  'アクティブウィンドウのタイトルを取得
  lngResult = GetWindowText(AWhwnd, lpString, 255)
  '取得したタイトルを表示
  Text1.Text = Left$(lpString, InStr(lpString, vbNullChar) - 1)

  'このウィンドウを一番上に配置する(必須ではありませんが、ないと不便なので)
  lngResult = SetWindowPos(Me.hwnd, HWND_TOPMOST _
             , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub

 実行結果及び使用コントールと配置図
 application07_01
直接入力すると、大文字・小文字・半角・全角が区別されるのでけっこう大変です。
これですと、タイトルを取得したいウィンドウをアクティブにすれば自動で取得でき便利です。
他のEXEのハンドルを取得しVBから終了するのサンプルと合わせて使用すると使い勝手が良くなるかと。

このページのトップへ移動します。 2.



このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
指定されたウィンドウのタイトルバーのテキストをバッファーへコピーします 指定されたウィンドウがコントロールの場合は、コントロールのテキストをコピーします
ウィンドウのタイトルバーの文字列を取得する  指定されたウィンドウハンドルの名前を取得する 現在アクティブなウィンドウのタイトルを取得する



このページのトップへ移動します。