トップページ⇒tech
1001コメント235KB

ふらっとVisual C#,C♯,C#(初心者用) Part103

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/03/06(水) 12:28:23.07
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part102
http://toro.2ch.net/test/read.cgi/tech/1360231775/

関連スレ
C#, C♯, C#相談室 Part78
http://toro.2ch.net/test/read.cgi/tech/1356268827/

コード貼るなら↓使ってください
http://ideone.com/
0951デフォルトの名無しさん2013/04/18(木) 21:32:36.07
他プロセスにWM_SETTEXTでポインタ渡せるのん?
0952デフォルトの名無しさん2013/04/18(木) 21:37:13.08
ポインタは渡せない(渡しても無意味)
OSがデータの受け渡しを中継するだけ
0953デフォルトの名無しさん2013/04/18(木) 22:41:46.67
>>947
Spy++で調べてみました。

ユーザ名を入力するウィンドウ
Handle: 00060C48
Class: Edit

>入力テキストボックス名
これは、Handle の事を差すのでしょうか?
0954デフォルトの名無しさん2013/04/19(金) 00:00:59.52
最近はマルチポストが流行ってるらしい
0955デフォルトの名無しさん2013/04/19(金) 11:08:29.12
マイクロ秒を取得するにはどうしたらいいでしょうか?

Randomのシードにミリ秒を使っているのですが、Processを使ったマルチプロセス時に
シードが被ることが多発しています。

Interlocked.Incrementを使ったマルチスレッドでの解決策はググって見つけたのですが
マルチプロセス時の解決策が見つからないのでマイクロ秒ではどうかと思った次第です。
0956デフォルトの名無しさん2013/04/19(金) 11:20:22.86
時刻にプロセスidも混ぜてシードにすれば
0957デフォルトの名無しさん2013/04/19(金) 11:29:55.45
時刻のハッシュ値+プロセスIDでいいな
09589532013/04/19(金) 12:04:34.61
基本認証の掛かったWEBページにアクセスする際に
起動する認証ダイアログにユーザ名、パスワードを入力し
OKボタンを押そうと下記コードを記述しています。

※まだ、ユーザ名等を入力する方法が分からないので
ひとまず「OK」ボタンをWindows APIを使って押下しようとしています。


IntPtr h = FindWindow(null, "Windows セキュリティ");
if (h != IntPtr.Zero)
{
IntPtr h2 = FindWindowEx(h, IntPtr.Zero, "DirectUIHWND", "");
IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "Button", "OK");  ← ここで h3 の値が 0 になります。

PostMessage(h3, WM_LBUTTONDOWN, 0, 0);
PostMessage(h3, WM_LBUTTONUP, 0, 0);


}


一体なぜ h3 で値の取得をすることが出来ないのでしょうか?
0959デフォルトの名無しさん2013/04/19(金) 12:11:14.63
単に間違ってんだろ
親h2にしてるけどそれ合ってんの?絶対にか?
0960デフォルトの名無しさん2013/04/19(金) 12:47:46.09
とりあえず相談室で聞くのかこっちで聞くのかはっきりさせろ
あと>>943でWindowsフォームと言っていて>>958でWebページに変わっているのはなぜなのかを詳しく
09619532013/04/19(金) 17:20:09.82
>>959
spy++ で確認したら OK ボタンの親コントロールは
DirectUIHWND でした。

>>960
Webページの間違いでした。
09629532013/04/19(金) 17:37:24.41
IntPtr h2 = FindWindowEx(h, IntPtr.Zero, "DirectUIHWND", "");
IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "CtrlNotifySink", "");  ← Spy++ で確認したらありました。
IntPtr h4 = FindWindowEx(h3, IntPtr.Zero, "Button", "OK");  ← h4 が 0 になります。

PostMessage(h4, WM_LBUTTONDOWN, 0, 0);
PostMessage(h4, WM_LBUTTONUP, 0, 0);

どうも、CtrlNotifySinkのクラスが複数あることが原因の様なのですが
どうすれば、OKボタンのハンドルを取得出来るのでしょうか?

■Microsoft Spy++- Windows 1

Window 00191048 "" DirectUIHWND
  Window 00421158 "" CtrlNotifySink
    Window 002E11F2 "OK" Button

  Window 001B12F4 "" CtrlNotifySink
    Window 00160DCE "キャンセル" Button
0963デフォルトの名無しさん2013/04/19(金) 17:46:40.51
EnumChildWindowsでも使えば
09649532013/04/19(金) 18:43:27.51
>>963
今回の様な状況で
EnumChildWindows を使う方法を解説したサイトをご存じでないですか?
0965デフォルトの名無しさん2013/04/19(金) 18:46:18.82
あのね、ぐーぐるってあるのね。
ぐーぐるにね、かんれんしたことばをにゅうりょくしてね、
えんたーきーを おすとね、きっとたくさんおしえてくれるのね、
0966デフォルトの名無しさん2013/04/19(金) 18:58:57.09
煽るな
枯死させろ
0967デフォルトの名無しさん2013/04/19(金) 19:01:08.90
Windows API 難しいなぁ。。。
0968デフォルトの名無しさん2013/04/19(金) 19:05:23.42
EnumChildWindowsの使い方なんて決まりきってるのに状況も糞もない
0969デフォルトの名無しさん2013/04/19(金) 19:07:13.29
正直UI操作するよりProxyでやった方がはるかに楽
09709622013/04/19(金) 19:08:10.34
DirectUIHWND の中に
CtrlNotifySink が2つあるので FindWindowEx で走査対象は

0 では無く 1番目から

といった指定をする事は出来ないのでしょうか?

IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "CtrlNotifySink", "",{1番目}); 
0971デフォルトの名無しさん2013/04/19(金) 19:12:03.97
MSDNにできると書いてないならできませんよ
0972デフォルトの名無しさん2013/04/19(金) 19:14:11.79
まあ、できるならEnumChildWindowsでも使えなんて言わないけどね
0973デフォルトの名無しさん2013/04/19(金) 19:15:42.49
ところがね、実はできると書いてあるんですよ
2番目の引数使えば
0974デフォルトの名無しさん2013/04/19(金) 19:27:39.91
時間というものはこのようにして浪費されていくのだなあ
09759622013/04/19(金) 19:49:30.68
>>969
Windows API を使って入力 > OK ボタンを押したいんです。


>>973
>973 名前:デフォルトの名無しさん[sage] 投稿日:2013/04/19(金) 19:15:42.49
>ところがね、実はできると書いてあるんですよ
>2番目の引数使えば

マジですか!?
0976デフォルトの名無しさん2013/04/19(金) 19:56:46.51
マジですよ
じゃあ頑張ってね
0977デフォルトの名無しさん2013/04/19(金) 23:17:13.22
>>976
ありがとうございます!!まじで出来ました!

>>972
バカはお前www
0978デフォルトの名無しさん2013/04/20(土) 10:25:32.59
すみまっせん
962から976までの書き込みであなたのものじゃない奴は全部俺なんですよ
つまり972も976も
0979デフォルトの名無しさん2013/04/20(土) 10:43:13.05
ここまで全部俺の自演
0980デフォルトの名無しさん2013/04/20(土) 16:28:15.01
何だこの流れ…

spy++使えって教えたのは俺

しかしこの内容だったらまともにc#でweb認証していれば
認証ダイアログも出ないのになあ…
win32 APIなんて使う必要なし

最初っからwebって書けよ
0981デフォルトの名無しさん2013/04/20(土) 16:33:03.90
fireFoxやChrome使ってたら使えないか…
0982デフォルトの名無しさん2013/04/20(土) 23:40:28.14
982
0983デフォルトの名無しさん2013/04/21(日) 01:53:07.13
983
0984デフォルトの名無しさん2013/04/21(日) 02:09:56.07
>>980
スレ立てお願い
0985デフォルトの名無しさん2013/04/21(日) 04:40:41.07
ほ
0986デフォルトの名無しさん2013/04/21(日) 05:53:41.60
も
0987デフォルトの名無しさん2013/04/21(日) 06:22:18.89
>>980
次スレよろ
0988デフォルトの名無しさん2013/04/21(日) 08:59:08.08
あ
0989デフォルトの名無しさん2013/04/21(日) 09:21:14.87
次スレ
ふらっとVisual C#,C♯,C#(初心者用) Part104
http://toro.2ch.net/test/read.cgi/tech/1366503422/
0990デフォルトの名無しさん2013/04/21(日) 09:29:23.00
>>989
おつ
0991デフォルトの名無しさん2013/04/21(日) 09:53:06.89
>>989
乙
0992デフォルトの名無しさん2013/04/22(月) 02:24:06.05
うめ
0993デフォルトの名無しさん2013/04/22(月) 04:29:45.81
ウメ
0994デフォルトの名無しさん2013/04/22(月) 06:11:51.99
梅
0995デフォルトの名無しさん2013/04/22(月) 07:54:52.36
うめ
0996デフォルトの名無しさん2013/04/22(月) 10:13:59.09
産め
0997デフォルトの名無しさん2013/04/22(月) 13:53:38.58
産む
0998デフォルトの名無しさん2013/04/22(月) 19:53:26.50
うめ
0999デフォルトの名無しさん2013/04/22(月) 19:55:39.80
ほらやるよ
1000デフォルトの名無しさん2013/04/22(月) 19:58:33.35
ほい
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。