■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#2302-2アプリケーションの切替方法について井藤君@ビギナー2001-12-02(日) 02:30
     #2305-2RE#2302:アプリケーションの切替方法についてSay2001-12-02(日) 11:32
     #2305-0RE#2302:アプリケーションの切替方法についてSay2001-12-02(日) 20:32
     #2317-2RE#2305:アプリケーションの切替方法について井藤君@おこまり中2001-12-03(月) 04:44
     #2347-3RE#2317:アプリケーションの切替方法について藤代千尋2001-12-03(月) 11:44
     #2317-0RE#2305:アプリケーションの切替方法について井藤君@おこまり中2001-12-03(月) 13:44
     #2347-0RE#2317:アプリケーションの切替方法について藤代千尋2001-12-03(月) 20:44
     #2360-3RE#2347:アプリケーションの切替方法についてゆー太郎2001-12-03(月) 23:43
     #2360-0RE#2347:アプリケーションの切替方法についてゆー太郎2001-12-04(火) 08:43
     #2453-2RE#2360:アプリケーションの切替方法について井藤君@お喜び中2001-12-05(水) 05:58
     #2453-0RE#2360:アプリケーションの切替方法について井藤君@お喜び中2001-12-05(水) 14:58
#2302-2
アプリケーションの切替方法について
プログラム上からすでに起動している別のプログラムに
切替えたいのですがどうすればいいのでしょうか?
ALT+TABをプログラム的にエミュレートする方法は
分かるのですが、あまり美しくないもので(^−^;;

どなたかお教え願えますでしょうか?
#2305-2
RE#2302:アプリケーションの切替方法について
FindWindowかEnumWindowsでハンドルを取得して、
SetForegroundWindowでウィンドウをアクティブにする。
というのではいかがでしょうか?
#2305-0
RE#2302:アプリケーションの切替方法について
FindWindowかEnumWindowsでハンドルを取得して、
SetForegroundWindowでウィンドウをアクティブにする。
というのではいかがでしょうか?
#2317-2
RE#2305:アプリケーションの切替方法について
お返事ありがとうございます
現在のプログラム(MyProg.exe)が

'タイマー関数で時間を監視
'MyProg
hogehoge_Timer_()
 (省略)
  If 定めた時間になったら then
    WindowTitle = "MyProg"
    WindowHandle = FindWindow(vbNullString,WindowTitle)
      ' ハンドルを取得できたら
      If WindowHandle <> 0
        WindowHandlePopUp = GetLastActivePopUp(WindowHandle)
        Ret = SetForegroundWindow(WindowHandlePopUp)
      End If
  End If

上のようにして、自分が前に来てキー入力を受け付ける状態になっていなかった時に
(実験しているのはEXCELで別の作業を実行している場合なのですが)
時間でMyProgを強制的に最善面に移動させ、キー入力がいく状態にしたいのですが、
現状では下のタスクバー上で点滅するだけで、うまくいきません。
原因がおわかりになりましたらご教授ください

#2347-3
RE#2317:アプリケーションの切替方法について
SetForegroundWindow を使うのが今までの手法だったのですが、Win98 から OS の
動作が変わりました。タスクバー上で点滅するのみになります。

これは「プログラムが勝手に、前面のウインドウを操作するのはおかしい。」という
考えを元にしてます。なので、ご希望の動作は、「出来ない/してはならない」こと
になります。(-_-;)

詳しくはこちらを(前に JI さんが投稿されたものです)。
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_setforegroundwindow.htm
http://www.microsoft.com/JAPAN/developer/windows2000/techart/win2000appcomp.asp
http://homepage2.nifty.com/winfaq/w2k/hints.html
 の「ウィンドウがフォアグラウンドに来ないで、タスクバー上で点滅するのですが」
#2317-0
RE#2305:アプリケーションの切替方法について
お返事ありがとうございます
現在のプログラム(MyProg.exe)が

'タイマー関数で時間を監視
'MyProg
hogehoge_Timer_()
 (省略)
  If 定めた時間になったら then
    WindowTitle = "MyProg"
    WindowHandle = FindWindow(vbNullString,WindowTitle)
      ' ハンドルを取得できたら
      If WindowHandle <> 0
        WindowHandlePopUp = GetLastActivePopUp(WindowHandle)
        Ret = SetForegroundWindow(WindowHandlePopUp)
      End If
  End If

上のようにして、自分が前に来てキー入力を受け付ける状態になっていなかった時に
(実験しているのはEXCELで別の作業を実行している場合なのですが)
時間でMyProgを強制的に最善面に移動させ、キー入力がいく状態にしたいのですが、
現状では下のタスクバー上で点滅するだけで、うまくいきません。
原因がおわかりになりましたらご教授ください
#2347-0
RE#2317:アプリケーションの切替方法について
SetForegroundWindow を使うのが今までの手法だったのですが、Win98 から OS の
動作が変わりました。タスクバー上で点滅するのみになります。

これは「プログラムが勝手に、前面のウインドウを操作するのはおかしい。」という
考えを元にしてます。なので、ご希望の動作は、「出来ない/してはならない」こと
になります。(-_-;)

詳しくはこちらを(前に JI さんが投稿されたものです)。
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_setforegroundwindow.htm
http://www.microsoft.com/JAPAN/developer/windows2000/techart/win2000appcomp.asp
http://homepage2.nifty.com/winfaq/w2k/hints.html
 の「ウィンドウがフォアグラウンドに来ないで、タスクバー上で点滅するのですが」
#2360-3
RE#2347:アプリケーションの切替方法について
> SetForegroundWindow を使うのが今までの手法だったのですが、Win98 から OS の
> 動作が変わりました。タスクバー上で点滅するのみになります。
> 
> これは「プログラムが勝手に、前面のウインドウを操作するのはおかしい。」という
> 考えを元にしてます。なので、ご希望の動作は、「出来ない/してはならない」こと
> になります。(-_-;)
> 

それでも無理やり やりたいのであれば、
AttachThreadInput API関数で無理やり現在アクティなブスレッドに
自分のスレッドをアタッチして、その間にBringWindowToTop API関数で
自分のフォームを前面に出します。
その後もう一度AttachThreadInput API関数でデタッチして解除すれば可能です。
もちろん、Windowsの仕様に反しますが。
#2360-0
RE#2347:アプリケーションの切替方法について
> SetForegroundWindow を使うのが今までの手法だったのですが、Win98 から OS の
> 動作が変わりました。タスクバー上で点滅するのみになります。
> 
> これは「プログラムが勝手に、前面のウインドウを操作するのはおかしい。」という
> 考えを元にしてます。なので、ご希望の動作は、「出来ない/してはならない」こと
> になります。(-_-;)
> 

それでも無理やり やりたいのであれば、
AttachThreadInput API関数で無理やり現在アクティなブスレッドに
自分のスレッドをアタッチして、その間にBringWindowToTop API関数で
自分のフォームを前面に出します。
その後もう一度AttachThreadInput API関数でデタッチして解除すれば可能です。
もちろん、Windowsの仕様に反しますが。
#2453-2
RE#2360:アプリケーションの切替方法について
みなさまありがとうございました。
おかげさまでできそうです。
でも、Windowsの仕様には反するんですね(^ー^;;

#2453-0
RE#2360:アプリケーションの切替方法について
みなさまありがとうございました。
おかげさまでできそうです。
でも、Windowsの仕様には反するんですね(^ー^;;
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)