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

わんくま同盟

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

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


(過去ログ 39 を表示中)
■19922 / )  Re[12]: notepadを行指定で開く
□投稿者/ 小春 (29回)-(2008/06/02(Mon) 12:39:08)
2008/06/02(Mon) 12:39:46 編集(投稿者)
No19846 (魔界の仮面弁士 さん) に返信
> 2008/05/30(Fri) 21:52:11 編集(投稿者)
> 
> ■No19843 (小春 さん) に返信
>>「//下へ下へ下へ…!」のところを、Ctrl + Gを送信し、5、0、0を送信し、Enterキーを送信したい!
>>と思ったのですが、Ctrl + Gがうまく送信されません…。
> 
> 大文字だと、Shift が送信されてしまうかも知れないので、
>  SendKeys.Send("^G");
> ではなく、
>  SendKeys.Send("^g");
> だとどうでしょう。
> 
> 
> それで駄目なら、Ctrl + G のかわりに
>  hProcess.WaitForInputIdle(500);
>  SendKeys.Send("%EG500{Enter}");
> のようにしてみるとか。

ご返信ありがとうございます。

SendKeys.Send("^g");
でうまくいきました。小文字なのですね・・・。

SendKeys.Send("%EG500{Enter}");
でもうまくいきましたが、Alt+E分、画面のちらつきが発生しました。

SendKeys.Send("^g500{Enter}");
でもちらつきが発生しますが、気にならない範囲だと思います。

最終的に、以下の数行で行ジャンプが実現できました。

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool SetForegroundWindow(IntPtr hWnd);

・・・

using (Process hProcess = Process.Start("notepad", "C:\\..\\hoge.txt"))
{
    //アイドル状態になるまで待機
    hProcess.WaitForInputIdle();

    //NOTEPADのウィンドウをアクティブにする
    SetForegroundWindow(hProcess.MainWindowHandle);

    //Ctrl + Gで行ジャンプダイアログを表示し、行数指定後、Enterキー押下
    SendKeys.Send("^g500{Enter}");
}

魔界の仮面弁士 さん及び、ご助言頂いた皆様ありがとうございました。
今度こそ、解決致しました。

※SendKeys.Sendメソッドで小文字だとうまく行くところが納得いきませんが、
 今後、大小の両方で試してみたいと思います。

解決済み
返信 編集キー/


管理者用

- Child Tree -