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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■8892  Re[3]: [ASP.NET+CSS]オンマウスで色を変える
□投稿者/ Mr.T -(2007/10/12(Fri) 15:31:53)
    No8887 (CSS初心者 さん) に返信
    > Mr.Tさん
    > 
    > すみませんが再度確認させてください。
    > 
    > StyleSheet1.cssに
    > A.cc1:hover { background-color:#3333CC; }を記述して
    > コントロールのCssClassプロパティにcc1指定
    > 
    > …ではダメなのでしょうか?
    > HTMLへ直接記述するということでしょうか?
    
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Login.aspx.vb" Inherits="Login" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>ログインページ</title>
    	<link rel="stylesheet" href="LoginParts.css" />
    </head>
    <body>
        <form id="MainForm" runat="server">
    	<asp:HyperLink ID="HyperLink1" runat="server" CssClass="hoge" NavigateUrl="~/Menu.aspx">login</asp:HyperLink>
        </form>
    </body>
    </html>
    
    LoginParts.css
    
    .hoge{ background-color:#3333CC; };
    A.hoge:hover{ background-color:#CCCCCC; };
    
    こんなんで、マウス置いたら変化しませんか?
    
記事No.8882 のレス /過去ログ21より / 関連記事表示
削除チェック/

■31555  Re[8]: png画像の表示について
□投稿者/ とっちゃん -(2009/01/23(Fri) 15:29:30)
>
    No31535 (よっしー さん) に返信

    エラーは、loadpng.cpp で出るのでしょうか?
    それとも、loadpng.h をインクルードしている自分のソースで出るのでしょうか?

    前者であれば、コンパイルの設定でそのソースだけプリコンパイルヘッダーは利用しないにしてビルドしてみてください。
    後者であれば、再現しなくなるまでインクルードしている行より前のソースを削除してみてください。

    そのうえで、再現しなくなったら
    再現した当時のソースとの違い(差分情報)を、loadpng.cpp のソースなどと比べてみて足りないものなどを調査してみてください。


    ところで...loadpng.cpp の最初のほうで、透過情報を捨てちゃうようですが問題はありませんか?
記事No.31266 のレス /過去ログ56より / 関連記事表示
削除チェック/

■92170  既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/08/30(Fri) 14:08:54)

    分類:[.NET 全般] 

    こんにちは。

    自作アプリから既存アプリを起動しそれを操作したいです。
    とりあえずショートカットキーで出来る程度が目標です。

    下記の様にしてメモ帳を起動、あるいは終了させて見ているのですが、
    終了側(ショートカットキー)がうまくいきません。

    # lparamは0にしているサンプルが複数見つかるので、0でいいのかなと思っていますがどうなのでしょう。

    とりあえず終了できるようにしたいのですが、何が足りないのでしょうか。
    あと、WM_ナントカとかVK_ナントカとか、C#の何処かで定義してないでしょうか。

    よろしくおねがいします。

    public partial class MainWindow : Window {
    private Process notepad;

    private void Button_Click_1(object sender, RoutedEventArgs e) {
    notepad = Process.Start("notepad.exe");
    notepad.WaitForInputIdle();
    }

    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

    UInt16 WM_KEYDOWN = 0x0100;
    UInt16 WM_KEYUP = 0x0101;
    UInt16 WM_SYSKEYDOWN = 0x0104;
    UInt16 WM_SYSKEYUP = 0x0105;
    UInt16 VK_MENU = 0x12; //alt
    UInt16 VK_F4 = 0x73;

    private void Button_Click_2(object sender, RoutedEventArgs e) {
    var hWnd = notepad.MainWindowHandle;
    PostMessage(hWnd, WM_SYSKEYDOWN, VK_MENU, 0);
    PostMessage(hWnd, WM_SYSKEYDOWN, VK_F4, 0);
    PostMessage(hWnd, WM_SYSKEYUP, VK_F4, 0);
    PostMessage(hWnd, WM_SYSKEYUP, VK_MENU, 0);
    }
    }
親記事 /過去ログ159より / 関連記事表示
削除チェック/

■92174  Re[1]: 既存アプリにショートカットキーを投げたい
□投稿者/ 魔界の仮面弁士 -(2019/08/30(Fri) 14:24:18)
    No92170 (こまお さん) に返信
    > 自作アプリから既存アプリを起動しそれを操作したいです。
    > とりあえずショートカットキーで出来る程度が目標です。

    UIAutomation を使ってみるのはどうでしょう。
    あるいは Codeer.Friendly も便利かも。



    > private void Button_Click_2(object sender, RoutedEventArgs e) {
    >  var hWnd = notepad.MainWindowHandle;
    >  PostMessage(hWnd, WM_SYSKEYDOWN, VK_MENU, 0);
    >  PostMessage(hWnd, WM_SYSKEYDOWN, VK_F4, 0);
    >  PostMessage(hWnd, WM_SYSKEYUP, VK_F4, 0);
    >  PostMessage(hWnd, WM_SYSKEYUP, VK_MENU, 0);
    > }
    メモ帳の終了だけなら、notepad.CloseMainWindow(); で良い気がします。
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92187  Re[2]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/08/30(Fri) 16:35:35)
    魔界の仮面弁士さんありがとうございます。

    >メモ帳の終了だけなら、notepad.CloseMainWindow(); で良い気がします。

    いや、キーボードショートカットでやりたかったので。

    >UIAutomation を使ってみるのはどうでしょう。

    良さそうなのを教えていただきありがとうございます。早速サンプルを漁っているのですが、
    キーボードのエミュレーションみたいなのが見当たりません。おすすめのURLってありますか?

    せめて1文字入らないかと↓とやってみたのですがやっぱり入りませんでした。orz

    PostMessage(hWnd, WM_KEYDOWN, ’A’, 0);
    PostMessage(hWnd, WM_KEYUP, 'A', 0);
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92193  Re[3]: 既存アプリにショートカットキーを投げたい
□投稿者/ 魔界の仮面弁士 -(2019/08/30(Fri) 19:19:53)
    2019/08/30(Fri) 19:31:23 編集(投稿者)

    No92187 (こまお さん) に返信
    >> UIAutomation を使ってみるのはどうでしょう。
    > 良さそうなのを教えていただきありがとうございます。早速サンプルを漁っているのですが、
    > キーボードのエミュレーションみたいなのが見当たりません。おすすめのURLってありますか?

    Codeer.Friendly だとこんな感じ。
    https://www.kompira.jp/column/operate_windows_gui/

    UIAutomation だとこのあたり。
    https://docs.microsoft.com/ja-jp/dotnet/framework/ui-automation/ui-automation-text-pattern-how-to-topics



    private Process notepad;
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
      this.notepad = Process.Start("notepad.exe");
      this.notepad.WaitForInputIdle();
    }
    private async void Button_Click_2(object sender, RoutedEventArgs e)
    {
      // メモ帳のテキスト部に「魔界の仮面弁士」と書き込む
      var elmNotepad = AutomationElement.FromHandle(this.notepad.MainWindowHandle);
      var elmEditBox = elmNotepad.FindFirst(TreeScope.Children, new AndCondition(new OrCondition(
        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit),
        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document)),
        new PropertyCondition(AutomationElement.ClassNameProperty, "Edit")));
      object patValue;
      if (elmEditBox.TryGetCurrentPattern(ValuePattern.Pattern, out patValue))
      {
        ((ValuePattern)patValue).SetValue("魔界の仮面弁士");
      }
      else
      {
        elmEditBox.SetFocus();
        await Task.Delay(100);
        SendKeys.SendWait("魔界の仮面弁士");
      }
    }
    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
      // メモ帳のテキスト部に書かれている文字列を取得する
      var elmNotepad = AutomationElement.FromHandle(this.notepad.MainWindowHandle);
      var elmEditBox = elmNotepad.FindFirst(TreeScope.Children, new AndCondition(new OrCondition(
        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit),
        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document)),
        new PropertyCondition(AutomationElement.ClassNameProperty, "Edit")));
      var patText = (TextPattern)elmEditBox.GetCurrentPattern(TextPattern.Pattern);
      textBlock1.Text = patText.DocumentRange.GetText(-1);
    }
    private void Button_Click_4(object sender, RoutedEventArgs e)
    {
      // メモ帳のタイトルバーの「閉じる」ボタンをクリック
      var elmNotepad = AutomationElement.FromHandle(this.notepad.MainWindowHandle);
      var elmTitleBar = elmNotepad.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.TitleBar));
      var elmCloseButton = elmTitleBar.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "閉じる"));
      var patInvoke = (InvokePattern)elmCloseButton.GetCurrentPattern(InvokePattern.Pattern);
      patInvoke.Invoke();
    }
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92192  Re[3]: 既存アプリにショートカットキーを投げたい
□投稿者/ とっちゃん -(2019/08/30(Fri) 18:26:20)
    No92187 (こまお さん) に返信
    > せめて1文字入らないかと↓とやってみたのですがやっぱり入りませんでした。orz
    >
    > PostMessage(hWnd, WM_KEYDOWN, ’A’, 0);
    > PostMessage(hWnd, WM_KEYUP, 'A', 0);

    SendKeys クラスの利用を検討してみてもいいと思います。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.sendkeys?view=netframework-4.8

    キー入力のエミュレーションは、WM_KEYDOWN/KEYUP ではできません。
    これらは、キー入力の「結果」として生成される副産物メッセージです。
    もちろん、ショートカットも同様。
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92212  Re[4]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/09/02(Mon) 12:56:57)
    みなさんありがとうございます。

    とりあえずSendKeyクラスを試そうとしたのですが
    VSが名前を確認しろと言ってきました。
    多分環境が.NET Framework 4.6.1なのが原因と思います。

    別の手を探さないとorz
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92214  Re[5]: 既存アプリにショートカットキーを投げたい
□投稿者/ 魔界の仮面弁士 -(2019/09/02(Mon) 13:08:55)
    2019/09/02(Mon) 18:07:57 編集(投稿者)

    No92212 (こまお さん) に返信
    > とりあえずSendKeyクラスを試そうとしたのですが
    > VSが名前を確認しろと言ってきました。

    参照設定に System.Windows.Forms を加えてください。


    > 多分環境が.NET Framework 4.6.1なのが原因と思います。

    リファレンスに依存情報が記されていますよ。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.sendkeys.sendwait?view=netframework-4.8


    >> SendKeys.SendWait(String) Method
    >>
    >> 名前空間:
    >>  System.Windows.Forms
    >> Assembly:
    >>  System.Windows.Forms.dll
    >>
    >> 適用対象
    >>  .NET Core
    >>    3.0 Preview 8
    >>  .NET Framework
    >>    4.8, 4.7.2, 4.7.1, 4.7, 4.6.2, 4.6.1, 4.6, 4.5.2, 4.5.1, 4.5, 4.0, 3.5, 3.0, 2.0, 1.1


    # .NET Framework 欄のカンマがコピーできなかったので、手動で追記。
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92268  Re[6]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/09/06(Fri) 13:35:36)
    レスポンス悪くてすみません。

    using System.Windows.Forms;といれると、Formsにアンダーラインが出ます。
    System.Windows.Forms.SendKeys.Send()とやっても同様でした。

    VS2017Expressだから、とか?
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92270  Re[7]: 既存アプリにショートカットキーを投げたい
□投稿者/ 魔界の仮面弁士 -(2019/09/06(Fri) 14:20:18)
    No92268 (こまお さん) に返信
    > VS2017Expressだから、とか?

    参照設定に System.Windows.Forms アセンブリを追加していないからでしょう。

    『参照設定』と『名前空間』は別物ですよ。


記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92272  Re[8]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/09/06(Fri) 14:56:46)
    https://www.peliphilo.net/archives/42

    で判りました。でさっそく

    var hWnd = notepad.MainWindowHandle;
    SetActiveWindow(hWnd);
    SendKeys.Send("%{F4}"); //閉じよメモ帳!

    とやってみたのですが例外が飛びました。

    |System.InvalidOperationException
    | HResult=0x80131509
    | Message=SendKeys は、Windows のメッセージをハンドルしないため、このアプリケーションの中で実行できません。 アプリケーションがメッセージをハンドルするように変更するか、または SendKeys.SendWait メソッドを使用してください。
    | Source=System.Windows.Forms
    | スタック トレース:
    | 場所 System.Windows.Forms.SendKeys.Send(String keys, Control control, Boolean wait)
    | 場所 System.Windows.Forms.SendKeys.Send(String keys)
記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92273  Re[9]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/09/06(Fri) 15:04:08)
    1歩前進。

    例外がSendWaitを使えって言ってるのに気が付いて

    SendKeys.SendWait("%{F4}");

    とやったら、メモ帳じゃなくて自分が閉じました。

    でも、誤爆ながらAlt-F4を投げることには成功した様です:-)

    あとはメモ帳にフォーカスを移し替えればいいのかなと思います。

記事No.92170 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92274  Re[10]: 既存アプリにショートカットキーを投げたい
□投稿者/ こまお -(2019/09/06(Fri) 15:30:56)
    いけました!!

    |[DllImport("USER32.DLL")]
    |public static extern bool SetForegroundWindow(IntPtr hWnd);
    |
    |private void Button_Click_2(object sender, RoutedEventArgs e) {
    | var hWnd = notepad.MainWindowHandle;
    | SetForegroundWindow(hWnd);
    | SendKeys.SendWait("%{F4}");
    |}

    魔界の仮面弁士さん、とっちゃんさん、ありがとうございました。

    これにて閉じさせていただきます!

記事No.92170 のレス / END /過去ログ159より / 関連記事表示
削除チェック/

■95098  Re[5]: SMTPでメールを送信がしたい
□投稿者/ KOZ -(2020/06/23(Tue) 15:02:50)
    No95097 (工場プログラマー さん) に返信
    > SSLだとWebサイトのソースコードでは遅れないのでしょうか?

    ConnectAsync メソッドの第3引数に SecureSocketOptions.SslOnConnect を指定します。
記事No.95089 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -