はじめまして。VB.NETの初心者です。
ワープロやテキストエディタで文書を作成中に、入力した数値を型にはめた文字列をそのワープロに送り出すプログラムを考えています。
ネット上での検索して得た情報を元に試行錯誤していますが、どうにも動きません。現在考えているものを単純化したのが以下のものです。form1にTextBox1とButton1が配置されています。
Inherits System.Windows.Forms.Form
Declare Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As Long) As Long 'APIのSetForegroundWindow
Public Declare Function GetWindow Lib "user32.dll" _
(ByVal hWnd As Long, ByVal wCmd As Long) As Long 'APIのGetWindow
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Vd As String
Dim ThisID, ProcID As Long
Dim temp As Integer
Vd = "Vd = (" & TextBox1.Text & ")"
'textbox1に入力された文字列を加工
ThisID = Me.Handle.ToInt64 'フォームのハンドルを取得
ProcID = GetWindow(ThisID, 2) '直前に使っていた窓のハンドルを取得?
temp = SetForegroundWindow(ProcID)
'直前に使っていた窓をアクティブにする?
SendKeys.Send(Vd) '文字列Vdを送る?
Me.Close() 'フォームを閉じる
End Sub
疑問1. まともにハンドルが取得できていないのではないか?
疑問2. sendkeysではまともに文字列が遅れないのではないか?
以上、もしご回答頂ければ幸いです。既にまる2日悩んでおります。
ハンドルなので、As Long ではなく、As System.IntPtr で宣言するべきかと。
魔界の仮面弁士さんありがとうございました。System.IntPrtを使うようにしてみました。しかしやろうとしていること自体は相当難しいことだということがわかってきました。取り急ぎ、お礼まで。
ツイート | ![]() |