表題の件に付きましてご存じの方居られましたらご助力を頂けますでしょうか?
###やりたい事
Windowsフォームアプリケーションからcmd.exeを起動してdosコマンドを実行し、実行結果をwindowsフォームアプリケーションに返したい。
但しcmd.exeその物は隠しておきたい(非表示で実行したい)のでフォーカスが対象に当たる事が前提のsendkeysは使わない。
取り合えずコマンド自体が送信出来るか試す為に以下のコードを作成しましたが目的のcmd.exeにコマンドがペースト出来ません。
VB.NET
1Imports System.Runtime.InteropServices 2Public Class Form1 3 4 Public mwh As IntPtr 5 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 6 Dim p As Process = New Process() 7 p.StartInfo.FileName = "cmd.exe" 8 p.Start() 9 10 11 While p.MainWindowHandle = IntPtr.Zero AndAlso p.HasExited = False 12 System.Threading.Thread.Sleep(1) 13 p.Refresh() 14 End While 15 16 Dim hMainWindow As IntPtr = p.MainWindowHandle 17 Me.mwh = hMainWindow 18 19 Clipboard.SetText("dir") 20 End Sub 21 22 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 23 Native.SendMessage(mwh, Native.WM_PASTE, 0, 0) 24 25 End Sub 26 27 28 <DllImport("user32.dll", CharSet:=System.Runtime.InteropServices.CharSet.Auto)> 29 Public Shared Function SendMessage( 30 ByVal hWnd As IntPtr, 31 ByVal Msg As Integer, 32 ByVal wParam As Integer, 33 ByVal lParam As Integer) As Integer 34 End Function 35 36 Public Const WM_PASTE As Integer = &H302 37 38End Class
フォーム上に貼り付けたボタン1をクリックすればcmd.exeにdirコマンドが入力される事を期待していますが思うように動作しません。
環境はwindows10 .netframework 4.6 になります。
よろしくお願いします。
早速の回答ありがとうございます。
皆様の回答の方法を試してみてフォードバックをしたいと思います。
取り急ぎ御礼まで
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。