C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

APIを使ったフォームのアクティブ処理

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■93984 / inTopicNo.1)  APIを使ったフォームのアクティブ処理
  
□投稿者/ ああ (1回)-(2020/02/28(Fri) 16:51:22)

分類:[.NET 全般] 

vb.net2010を使用しています。

VB6.0で作成されたコードを参にしてVB.net 2010のコードへの書き換えを行っています。
引用返信 編集キー/
■93985 / inTopicNo.2)  Re[1]: APIを使ったフォームのアクティブ処理
□投稿者/ ああ (2回)-(2020/02/28(Fri) 16:52:57)

vb.net2010を使用しています。

VB6.0で作成されたコードを参にしてVB.net 2010のコードへの書き換えを行っています。

VB6.0のコードの中で以下のサイトに記載されているAPIを使ったウインドウを一時的にアクティブにして最前面に持ってくる処理が行われています。
http://frog.raindrop.jp/knowledge/archives/000832.html

これをVB.netで行いたい場合はどのように変更すればよいでしょうか?
引用返信 編集キー/
■93986 / inTopicNo.3)  Re[2]: APIを使ったフォームのアクティブ処理
□投稿者/ ああ (3回)-(2020/02/28(Fri) 16:54:12)
宣言と型は以下のような変更でいいでしょうか?
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
Private Declare Function GetForegroundWindow Lib "user32" () As IntPtr
Private Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Integer, ByVal idAttachTo As Integer, ByVal fAttach As Boolean) As Boolean
Private Declare Function BringWindowToTop Lib "user32" (ByVal hWnd As IntPtr) As Boolean
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As IntPtr) As Integer


Private Const FORMAT_MESSAGE_FROM_SYSTEM As Integer = &H1000&
Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Integer = &H200&
Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" (ByVal dwFlags As Integer, ByRef lpSource As IntPtr, ByVal dwMessageId As Integer, _
ByVal dwLanguageId As Integer, ByVal lpBuffer As Byte, ByVal nSize As Integer, ByRef Arguments As IntPtr) As Integer


引用返信 編集キー/
■93988 / inTopicNo.4)  Re[3]: APIを使ったフォームのアクティブ処理
□投稿者/ ああ (4回)-(2020/02/28(Fri) 17:19:56)

その他の変更として

OLE_HANDLE型→IntPtr型

で良いでしょうか?

AppオブジェクトのスレッドIDはどのように変更すれば良いでしょうか?

どなたかご教授をお願いします。
引用返信 編集キー/
■93989 / inTopicNo.5)  Re[4]: APIを使ったフォームのアクティブ処理
□投稿者/ ああ (5回)-(2020/02/28(Fri) 17:22:32)
まとめて書こうとしましたが迷惑投稿者となってしまったため、分けて投稿しました。

見づらいとは思いますが、どなたか回答をお願いします。
引用返信 編集キー/
■93990 / inTopicNo.6)  Re[5]: APIを使ったフォームのアクティブ処理
□投稿者/ daive (1回)-(2020/02/28(Fri) 17:31:26)
2020/02/28(Fri) 17:33:21 編集(投稿者)
2020/02/28(Fri) 17:33:13 編集(投稿者)

参考サイト例。

外部アプリケーションのウィンドウをアクティブにする
https://dobon.net/vb/dotnet/process/appactivate.html#section2

まずは、ここら↓ をみて、さらに、ネット検索してください。

.NET Tips
https://dobon.net/vb/dotnet/index.html

C# と VB.NET のサンプル
http://jeanne.wankuma.com/tips/

Windows API系は、実行時のソリューションプラットフォームの、
x86、x64、Any CPUが関連しますので、
適切に設定してください。
⇒x86、x64 を決め打ちする方が楽かも

>vb.net2010を使用しています。
必要性があっての、VS2010 / Visual Basic 2010 なら、構いませんが
コスト的な問題であれば、以下のサイトも参考に。
Visual Basic 中学校
http://rucio.o.oo7.jp/main/main.htm
Visual Basic 2019 を無料でインストールする方法

引用返信 編集キー/
■93993 / inTopicNo.7)  Re[4]: APIを使ったフォームのアクティブ処理
□投稿者/ KOZ (87回)-(2020/02/28(Fri) 18:35:41)
No93988 (ああ さん) に返信
> その他の変更として
> OLE_HANDLE型→IntPtr型
> で良いでしょうか?
はい。


> AppオブジェクトのスレッドIDはどのように変更すれば良いでしょうか?

GetCurrentThreadId を呼び出して取得します。

宣言は pinvoke.net で調べるとよいです。
https://www.pinvoke.net/default.aspx/kernel32.getcurrentthreadid

引用返信 編集キー/
■93994 / inTopicNo.8)  Re[1]: APIを使ったフォームのアクティブ処理
□投稿者/ 魔界の仮面弁士 (2576回)-(2020/02/28(Fri) 19:13:32)
No93984 (ああ さん) に返信
> VB6.0で作成されたコードを参にしてVB.net 2010のコードへの書き換えを行っています。

Visual Studio 2010 および 2012 の開発環境は、最前面表示切替のための
ForegroundLockTimeout 設定を破壊してしまう不具合があるのでご注意ください。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=63230&KLOG=107
https://support.microsoft.com/ja-jp/help/2763075
引用返信 編集キー/
■94002 / inTopicNo.9)  Re[2]: APIを使ったフォームのアクティブ処理
□投稿者/ yuji (5回)-(2020/03/01(Sun) 20:59:43)
回答していただいたみなさんありがとうございましたm(__)m

解決することができました。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ