0

別のプログラムでテキストボックスを設定するためにWindows APIを使用しています... sysMonthCal32フォームを作成するボタンにリンクされた1つの編集を除いて、すべてが完全に正常に機能しています...

いくつかのスナップショットを使用すると、より明確になります。

編集 (ボタンのあるテキストボックス):

編集

ボタンをクリックすると、フォーム SysMonthCal32 が表示されます (spy++ でも):

カル

私のコードは次のとおりです。最初に編集でメッセージを送信しようとします(spy ++によって識別されますが、機能しません)。次に、sysMonthCal32を介して試します:

                    //birthdate
                    string bd = dd  + "/"+ mm +"/"+ yyyy;
                    child = FindWindowEx(parent, child, "Edit", null);
                    lExStyle = (long)GetWindowLong(child, GetWindowLongParam.GWL_STYLE);
                    lExStyle &= ~(ES_UPPERCASE);
                    lExStyle &= ~(ES_READONLY);

                    SetWindowLong(child, GWL_STYLE, (uint)lExStyle);

                    DateTime dt = new DateTime(int.Parse(aaaa), int.Parse(mm), int.Parse(jj));
                    //SendMessage(child, DTM_SETSYSTEMTIME, IntPtr.Zero, dt.ToString()); //<-- doesn't work (child is the textbox)
                    btn = FindWindowEx(parent, btn, "Button", null); //<-- I find the button
                    SendMessage(btn, BM_CLICK, IntPtr.Zero, "0, 0"); //<-- I click it to make the sysMonthCal32 form appear.

                    IntPtr cal = FindWindow(null, "SysMonthCal32"); //<-- i find the form
                    //SendMessage(cal, DTM_SETSYSTEMTIME, IntPtr.Zero, dt.ToString());
                    //doesn't work
                    SendMessage(cal, WM_SETTEXT, IntPtr.Zero, bd); //bd= birthdate, doesn't work

私はインターネット上で多くのことを試しましたが、結果はありませんでした...おそらく誰かがここで解決策を持っていますか?

以下は、spy++ のさまざまなスナップショットです。

編集のスタイル:

スタイル

メッセージを編集に送信した後、空白のままですが、スパイ++でこれを取得しました:

スパイ

SysMonthCal32 フォームのスタイル:

ここに画像の説明を入力

4

0 に答える 0