A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
SendMessage API で WM_COPYDATA を使用した例です。
A側 ( Windowsフォームアプリケーション・プロジェクトのプロパティの「ビルド」の「アンセーフコードの許可」にチェックを入れる必要あり )
using System;
using System.Diagnostics;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}
private const int WM_COPYDATA = 0x004A;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process.Start(@"C:\...\ConsoleApplication1.exe ", this.Handle.ToString());
}
unsafe protected override void WndProc(ref Message m)
{
if( m.Msg == WM_COPYDATA ) {
COPYDATASTRUCT *pcds = (COPYDATASTRUCT*)m.LParam.ToPointer();
if( pcds->cbData == 0 ) {
MessageBox.Show("正常に起動しました。",this.Text, MessageBoxButtons.OK,MessageBoxIcon.Information);
} else {
MessageBox.Show("エラーです。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
m.Result = new IntPtr(-1);
this.Close();
}
base.WndProc(ref m);
}
}
}
B側 ( コンソールアプリケーション )
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(int hWnd, UInt32 Msg, IntPtr wParam, ref COPYDATASTRUCT lParam);
private const int WM_COPYDATA = 0x004A;
[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}
static void Main(string[] args)
{
int hWnd;
if( 0 < args.Length )
{
if (int.TryParse(args[0], out hWnd) == true)
{
COPYDATASTRUCT cds = new COPYDATASTRUCT();
cds.cbData = 0;
SendMessage(hWnd, WM_COPYDATA, IntPtr.Zero, ref cds);
}
}
Console.WriteLine("Hello");
Console.ReadLine();
}
}
}
ちなみに、
>起動失敗の場合:-1
とのことですが、応答を返すプログラムがつもりのBがそもそも起動していないのですから、応答することはできません。(死人に話しかけても返事がないのと同じ)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows Vista・XP windows xp proが起動しなくなりました 10 2022/05/20 00:49
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Windows 10 やってもうた。windows10起動せず。知恵を貸してください。 2 2023/02/08 11:36
- ノートパソコン Windowsが起動しなくなってしまいました。 4 2023/08/28 16:30
- Windows 10 Win10 21H1 のアップデート 5 2022/05/14 19:10
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- Windows 10 Windows10の不具合(Critical Process Died) 9 2022/04/19 21:11
- その他(パソコン・スマホ・電化製品) タブレットにナビゲーションバーを表示させたい。 1 2022/07/24 20:34
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アウトルックが起動しているか...
-
フォームの最前面が効かない
-
VBSから別のVBS起動するとき変...
-
Process.Startで起動したアプリ...
-
VBAでOutlookを終了させたい Ex...
-
Java 条件によって起動させない
-
EXCEL VBAから他アプリケーショ...
-
MSペイントを画像ファイル名を...
-
宛先ナシでメールソフトを起動...
-
VBSで起動したアプリが前面表示...
-
Excelの残骸
-
C# 他のアプリケーションを優先...
-
VBAでSeleniumからChromeを起動...
-
対象のアプリケーションが終了...
-
VB6で呼び出し元の情報を取得す...
-
phpで、メール自動受信を作りたい
-
VBからExcelに書き込む方法
-
EclipseとTomcat使用時、すぐに...
-
Designer.vbは直接コードをいじ...
-
Visual Studio 「AnyCpu」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBSから別のVBS起動するとき変...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
Windows上のプログラム。「予め...
-
EXCEL VBAから他アプリケーショ...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
exeファイルを実行するとすぐに...
-
VB6で呼び出し元の情報を取得す...
-
C# 他のアプリケーションを優先...
-
64bitで作ったEXEを32bitで起動...
-
ウィンドウを終了させたい・・・
-
CreateProcessのエラー
-
VBAでSeleniumからChromeを起動...
-
VBA 最大化する方法
-
MSペイントを画像ファイル名を...
-
ACCESS VBAで別のACCESS(mdb)を...
-
HTMLタグの中にDLLを埋め込む事...
-
VBからExcelに書き込む方法
おすすめ情報