直前に使っていたwordまたはテキストエディタに文字列を送るには?


峰村健司  URL  2005-11-15 09:27:43  No: 127717

はじめまして。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日悩んでおります。


魔界の仮面弁士  2005-11-15 10:48:53  No: 127718

ハンドルなので、As Long ではなく、As System.IntPtr で宣言するべきかと。


峰村健司  URL  2005-11-16 09:20:45  No: 127719

魔界の仮面弁士さんありがとうございました。System.IntPrtを使うようにしてみました。しかしやろうとしていること自体は相当難しいことだということがわかってきました。取り急ぎ、お礼まで。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加