Win32API質問箱 Build ..
472:デフォルトの名無しさん
10/01/12 15:30:42
それぐらいSpy++で調べろよ・・・
473:デフォルトの名無しさん
10/01/12 17:20:30
>>470
UIAかMSAAで取得してるんじゃね?
474:467
10/01/12 18:22:35
ふと思い立ち、
SendMessageAとSendMessageWとで、それぞれ余計な文字コード変換をしないようにbyte配列を渡して受け取ってみたところ
SendMessageAでそれらしき値が返ってくるのを確認しました。
SendMessageWだと4文字で切られている雰囲気です。
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int SendMessageA(IntPtr hWnd, int Msg, int wParam, StringBuilder lParam);
StringBuilder sb = new StringBuilder(256);
int r = SendMessageA(hnd, WM_GETTEXT, 100, sb);
のようにしてみたところ、sbにきちんと8文字取れるようになりました。
ただrに入る値は4です。
これは対象アプリかOS(XP SP3です)のバグと思って良いのでしょうか?
お騒がせしました。ありがとうございました。
475:デフォルトの名無しさん
10/01/12 18:27:13
ふと思い立ちって、、、>>467読んだ瞬間にそう思ったよ。
まあ問題なのは、不具合は全部自分以外のバグと思っちゃうところじゃないのかな。
476:デフォルトの名無しさん
10/01/12 18:33:50
WM_GETTEXTはA/W関係ないと思うが・・・?
477:デフォルトの名無しさん
10/01/12 18:43:01
8文字が全て全角文字で、ANSIで8バイト、Unicodeで4文字って事だろ。
マルチバイト文字とワイド文字の違いを分かってないだけなのに
OSのせいにするその脳細胞がバグってる。
478:デフォルトの名無しさん
10/01/12 18:49:51
XP以降のEM_SETSEL等はSendMessageAでもUnicode扱いするバグがあるんだが・・・
479:467
10/01/12 19:04:42
対象アプリの表示「 0:37:15」
確認コード
byte[] buff = new byte[256];
int r = SendMessageA(hnd, WM_GETTEXT, 100, buff);
int r = SendMessageW(hnd, WM_GETTEXT, 100, buff);
[DllImport("user32.dll")]
public static extern int SendMessageA(IntPtr hWnd, int Msg, int wParam, byte[] lParam);
[DllImport("user32.dll")]
public static extern int SendMessageW(IntPtr hWnd, int Msg, int wParam, byte[] lParam);
SendMessageAの結果
r=4 buff= 0x20,0x30,0x3a,0x33,0x37,0x3a,0x31,0x35,0x00以降全て0
SendMessageWの結果
r=4 buff= 0x20,0x00,0x30,0x00,0x3a,0x00,0x33,0x00,0x00以降全て0
どちらの結果もwParamの値と、戻り値の整合性がとれていないと思うのですが。
試しにWM_GETTEXTLENGTHを送ってもAもWもどちらも4が返ってきました。
480:デフォルトの名無しさん
10/01/12 19:20:45
そもそもSendMessageの宣言は合ってるのか?
481:デフォルトの名無しさん
10/01/12 19:28:29
OSのバグじゃなくて.NETかお前の書いたソースの問題。
とりあえずC#スレで聞いて来い。
482:デフォルトの名無しさん
10/01/12 20:16:09
>VS2010β2付属のSpy++も4文字しか認識しません。
483:デフォルトの名無しさん
10/01/12 21:55:22
>>479
正しく機能しないと思うなら、正しく機能するようにむりやり書いておけばいいと思うよ
APIにバグなんて意外とあるし、バグでなければどうせそのうち矛盾して直す羽目になるから
484:デフォルトの名無しさん
10/01/12 21:59:14
宣言が間違ってる。ref が足らない。
485:デフォルトの名無しさん
10/01/12 21:59:48
IntPtr で受けて、Masharl.PtrToStringAnsi() とかで文字列に変換しろ。
486:デフォルトの名無しさん
10/01/12 22:09:45
バッファ確保しとかないとダメだろ。
487:デフォルトの名無しさん
10/01/12 22:32:19
相手側の実装の問題かも
488:467
10/01/12 22:50:04
自己解決しました
489:デフォルトの名無しさん
10/01/12 22:57:01
マーシャリングの問題なのでAPIスレの範疇ではない
490:デフォルトの名無しさん
10/01/12 23:11:51
XP VC6 SDK
_MBCSビルドで正常に表示されている仮想リストビューが _UNICODEビルドに変更すると
LVN_GETDISPINFO(W)が来ず、なぜか LVN_GETDISPINFO(A)が来るのでそれに対し
WCHAR文字列のポインタを与えると それを charと解釈し正常に文字が表示されません。
試しに LVS_OWNERDATAを外して InsertItemで WCHARの文字列を挿入すると 3カラム中
1カラム目は正常に表示され、2,3カラム目はデータが無いので LVN_GETDISPINFO(A) が
発生し、前述と同じ表示になります。
LVN_GETDISPINFO(A)に対し、WCHAR文字列ではなくchar文字列のポインタを与えると
2,3カラム目も正常に表示され、1カラム目は WCHAR、2,3カラム目は charという
おかしな状態になります。
何か LVN_GETDISPINFO(W)が来ない原因が思い当たりますでしょうか。
491:デフォルトの名無しさん
10/01/12 23:52:31
>>490
ウィンドウクラスは WC_LISTVIEWW になっているかい?
492:デフォルトの名無しさん
10/01/12 23:57:50
はい。念のため、CreateWindowExW、WC_LISTVIEWW としても実行してみましたが
同じでした
493:490
10/01/13 00:56:40
原因が分かりました。
他の言語の GUIに リストビューを貼り付ける形で 何の言語からも手軽に 仮想リストビュー
や表示するデータを利用できるように作った DLLなのですが、その親となる相手方のコントロ
ールやウィンドウをサブクラスしていて、親(相手方)が ANSIだった為 リストビューが親に
ANSI のメッセージ(WM_NOTIFY)を送っていたようです。
間に1枚 UNICODEのコントロールを作成することで解決しました。
>>491 ありがとうございました
494:デフォルトの名無しさん
10/01/13 01:31:03
BitBltでソースの画像より大きいサイズを指定すると
余った部分が真っ黒になるようだけど、
その部分の色を指定することは出来ないの?
495:デフォルトの名無しさん
10/01/13 02:51:59
>>494
背景とソースを合成したビットマップを動的に作成してBitBltするか
ソースの画像サイズでBitBltしてから描画した画像の範囲をExcludeClipRectして最後にソースよりも大きいサイズの矩形を塗りつぶす。
496:デフォルトの名無しさん
10/01/13 02:57:51
入力先はソースより大きくする理由はない
出力先が大きいなら塗り潰す
497:デフォルトの名無しさん
10/01/13 03:05:55
>>496
StretchBltと間違えていませんか?
BitBltは入力元のサイズは指定できませんよ。
498:デフォルトの名無しさん
10/01/13 03:14:59
指定できなくても元サイズはあるだろう
destをそれと同じサイズにすればいいだけ
499:デフォルトの名無しさん
10/01/13 03:23:43
真っ黒になる(=ゼロクリアする)かどうかって不定じゃなかったか?
ちゃんと正しいサイズを指定しろ。
500:デフォルトの名無しさん
10/01/13 03:32:19
>>498
じゃあこれはどういう意味ですか?
> 入力先はソースより大きくする理由はない
501:デフォルトの名無しさん
10/01/13 03:40:52
絵を絵より大きなサイズ指定して出力しても仕方がないだろう
502:デフォルトの名無しさん
10/01/13 03:56:24
>>500
そんなん俺に聞かれたって知るかよ
503:デフォルトの名無しさん
10/01/13 05:42:34
知らないならレスしないで下さい。ウザイだけです。
504:デフォルトの名無しさん
10/01/13 10:28:10
そもそもBitBltにソースのサイズを超える指定をした場合の言及がないので、
動作は未定義と考えるべき。
ドライバの実装など環境に依存する可能性があるので、そもそも使うべきではない。
505:デフォルトの名無しさん
10/01/13 10:59:23
Vista以降はドライバに依存しないでしょ
506:デフォルトの名無しさん
10/01/13 13:02:16
だれがVista以降専用だと書いているんだ?
なんで脳内妄想で書いてもいない前提条件を付けるの?
507:デフォルトの名無しさん
10/01/13 13:56:45
質問する際に対象OSを書かない場合は質問時点での最新OSとみなします。
508:デフォルトの名無しさん
10/01/13 14:12:45
SDK的解釈かよw
509:デフォルトの名無しさん
10/01/13 18:03:45
>>496
ダブルバッファとやらだと
画面全体のサイズに描画するものじゃないの?
510:デフォルトの名無しさん
10/01/13 18:22:08
画面全体のサイズのバッファを用意してるからな
511:デフォルトの名無しさん
10/01/14 12:37:57
[Mainウィンドウ]→→→※[TreeViewウィンドウ(Mainのowned)]
↓
[Mainダイアログ(Mainの子)]
※印のTreeViewウィンドウは、CreateWindow()でなければ実現できない
機能を持たせているので、独自にメッセージループをもっています。
ここで、その※印のTreeViewウィンドウを開いたまま Mainウィンドウを
閉じてアプリを終了すると、”ゾンビ状態?”になり、タスクマネージャーに
プロセスが残ります…
どうも PostQuitMessage() が実行されてないようなんですが、
なにが悪いのか、ヒントだけでもお願いいたします。 m(。。)m
512:デフォルトの名無しさん
10/01/14 12:51:47
PostQuitMessageで独自のメッセージループは抜けるけど、
元のメッセージループはそのまま走っているからじゃないかな
もう一回PostQuitMessageしてみたらどうだろう
513:デフォルトの名無しさん
10/01/14 14:27:28
> CreateWindow()でなければ実現できない機能
意味不明
たぶんTreeViewをサブクラスすれば済む話のような気がする
514:デフォルトの名無しさん
10/01/14 17:25:29
設計思想が悪い
515:デフォルトの名無しさん
10/01/14 17:42:35
頭が悪い
516:デフォルトの名無しさん
10/01/14 17:50:04
>CreateWindow()でなければ実現できない
>機能を持たせているので、独自にメッセージループをもっています。
CreateWindowの利用と、独自にメッセージループを持つという内容が繋がらない。
この独自というのがTreeViewを完全に再実装しているのか、
メッセージループの中でさらにメッセージループを使っているということなのか、
別スレッドで回しているということなのか全く伝わらない。
517:デフォルトの名無しさん
10/01/14 18:09:18
全く伝わらない奴がなぜレスするの?
518:デフォルトの名無しさん
10/01/14 18:14:47
独自のモーダルループを用意してるんだろ。
そんな事も分からない連中は黙っとけ。
519:デフォルトの名無しさん
10/01/14 18:26:01
俺も全く意味が分からなくてレスしなかったけど、意味が分からないということも
伝えないとダメだなw
同じスレッドで作成したウインドウなら、普通は全て1つのメッセージループで
処理するものだしね。
別のものを「メッセージループ」と間違って呼んでいるのか、それとも別スレッドなのか、
あるいはPeekMessageでhWndを限定しながら回してるのか。
CreateWindowでなければ実現できない機能というのもよく分からない。
Dialogだとできないって意味なのかな?
>>518
TreeViewウインドウを開いたままMainウインドウを操作できるようだから、
モーダルではないと思う。
520:デフォルトの名無しさん
10/01/14 18:35:30
IEのプロキシ設定を行った場合、
そのアドレス、ポートの情報を
win32api で取得することは可能でしょうか?
521:デフォルトの名無しさん
10/01/14 18:48:57
>>519
モーダルダイアログとモーダルループの違いも分からないの?馬鹿なの?
522:デフォルトの名無しさん
10/01/14 18:54:07
モーダルダイアログとモーダルループが分からない人ってまだ居たのか。
まあ、回答者のレベルが低すぎるのがこのスレ最大の欠点だが。
523:デフォルトの名無しさん
10/01/14 18:59:59
どこのスレにも一人ぐらいいるでしょw
ろくに知識無いくせにやたらと回答したがる奴
524:デフォルトの名無しさん
10/01/14 20:39:42
オレオレ
525:デフォルトの名無しさん
10/01/14 20:40:25
エンドレスループですね
526:デフォルトの名無しさん
10/01/14 20:44:29
知識ある人はレスしないで下さい。ウザイだけです。
527:デフォルトの名無しさん
10/01/14 21:17:37
もし、※ループのGetMessageでWM_QUITを拾うと、WM_QUITがMSGキューから消えてる
Mainループでは、WM_QUITが拾えないので無限ループ
528:デフォルトの名無しさん
10/01/14 21:19:26
正しくは、WM_QUITは、内部フラグをONにしているだけとか書くなよ>知識あるやつ
529:デフォルトの名無しさん
10/01/14 22:02:55
>>512で答え出てるのにここまで引っ張るあたりさすがだな
しかも知識無い馬鹿まで混じってるしw
530:デフォルトの名無しさん
10/01/14 22:07:57
Win32 の基礎知識を理解してない馬鹿の回答は禁止します。
531:デフォルトの名無しさん
10/01/14 22:26:29
>>520
InternetQueryOption
532:デフォルトの名無しさん
10/01/14 22:31:15
>>529
>>512の現象分析は正しいが、解決法は間違っとる。
533:デフォルトの名無しさん
10/01/14 22:58:45
間違ってないよ
そんな事さえ分からんのか
534:デフォルトの名無しさん
10/01/14 23:00:41
知識無い馬鹿はスルーしろ。
535:デフォルトの名無しさん
10/01/14 23:03:11
>>532
間違っているというのなら、何が間違っていて正解は何なのかを提示しろ。
煽るだけのどこかの馬鹿と一緒になるぞ。
536:デフォルトの名無しさん
10/01/14 23:17:45
どこかの馬鹿(笑)
お前だよwww
537:デフォルトの名無しさん
10/01/14 23:21:34
msdnに検索機能が無いとかほざいた馬鹿?
538:デフォルトの名無しさん
10/01/14 23:23:44
正解
539:デフォルトの名無しさん
10/01/14 23:31:48
どうでもいい
540:デフォルトの名無しさん
10/01/14 23:35:19
▄▄ ▄▄▄ █ ▄█
▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █
▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █
█▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █
█▄ █ ▄█ █▀▀█ █ █▄
▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀
▄▄▄▄▄▄ ▄▄▄
▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █
█▀ █ ▀▀█▀ ▀▄
█ █▀▀▀ █ █▄ ▀
█▄▄▄ █ ▄▄▄ ▀▀
▀ ▀▀▀
541:デフォルトの名無しさん
10/01/14 23:48:14
許しを請うなら二度と来るな。
542:デフォルトの名無しさん
10/01/14 23:53:34
許しを請いに来い
543:デフォルトの名無しさん
10/01/14 23:57:32
ねえ、Win32の知識に乏しいのになぜスレに居るの?
正直に答えてよ。
544:デフォルトの名無しさん
10/01/14 23:59:58
質問スレだからだよ
545:デフォルトの名無しさん
10/01/15 00:04:53
理由になってない。
少なくとも回答する立場では無いだろう。
546:デフォルトの名無しさん
10/01/15 00:05:44
元の質問者ほったらかしで雑談するのもうやめようぜ。
547:デフォルトの名無しさん
10/01/15 00:07:44
質問は>>512で解決してるだろ
548:デフォルトの名無しさん
10/01/15 00:09:31
現時点で未解決の質問は>>543だけです
当事者は早く答えなさい
549:デフォルトの名無しさん
10/01/15 00:15:07
>>535
> 質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
550:デフォルトの名無しさん
10/01/15 00:24:42
>>549
MSDNに検索機能なんてないだろ
いったいどれだけホラ吹けば気が済むんだ?
551:デフォルトの名無しさん
10/01/15 02:42:05
ホント、学生レベルの回答者が多いな。
552:デフォルトの名無しさん
10/01/15 07:15:44
どこかの馬鹿という言葉にすぐさま反応しているのは、
自分にその認識があるのを認めてしまったことを示すわけだけどね。
553:デフォルトの名無しさん
10/01/15 08:14:08
ちょっとAPIの質問と違うのですが、CreateWindowでコマンドボタンを作成した場合
戻り値のHWNDはどこに置くのがスタンダードなんでしょうか?
メッセージで呼び出されるウィンドウプロシージャ内にstatic宣言かグローバル宣言かに
ナルト思うのですが。
554:デフォルトの名無しさん
10/01/15 10:02:43
GWL_USERDATAにオク。
555:デフォルトの名無しさん
10/01/15 10:12:14
ウインドウ自体をclassで管理して、親ウインドウのメンバ内に置く。
556:デフォルトの名無しさん
10/01/15 10:52:58
ボタンくらいならID振って、戻り値は関数の成否判定のみ
557:デフォルトの名無しさん
10/01/15 13:55:41
レジストリファイル(.reg)を
プログラム上から読込み、レジストリ登録を行いたいのですが、
間単に行えるAPIはないでしょうか?
また、逆に指定したレジストリのキー配下を.reg形式で出力するAPIも
あれば教えていただきたいです。
558:デフォルトの名無しさん
10/01/15 14:01:08
regedit使え
559:デフォルトの名無しさん
10/01/15 14:02:35
むしろreg.exe使え
560:557
10/01/15 14:08:25
>>558,559
外部のモジュールが使えないので、悩んでいます。
APIがなければ、自作で.regファイルを読み込み、 1個ずつ登録して行きます。
561:デフォルトの名無しさん
10/01/15 14:09:58
外部て、OSに標準で備わってるファイルだろ
562:デフォルトの名無しさん
10/01/15 14:16:47
APIだってある意味外部のモジュールでしょうが
563:デフォルトの名無しさん
10/01/15 14:50:11
557は頭が悪いからその辺理解できないのね
564:デフォルトの名無しさん
10/01/15 15:18:47
>>557
そういう用途は恐らくVB-Scriptを使うのが最善ではないかと
565:デフォルトの名無しさん
10/01/15 15:38:38
"VB-Script"?
566:デフォルトの名無しさん
10/01/15 16:02:46
VBScriptなりJavaScriptなり場合によってはPerlScriptを
使ってWSHでも使えば?Windows Scripting Host.
メモ帳でコード作ってファイルのアイコン、マウスク
リック一発で一発起動。
Windowx9xの頃からあるんでそこそこ安定しているし
最近のマシンだったら十分早い。
Windows power shellのほうが良いという人はそっち
使えばいいし...
C++でレジストリ環境のAPIを使うやり方は恐らく
とりあえずは知らなくてもよいことまで
いちいち勉強しなければならなくなる可能性大
567:デフォルトの名無しさん
10/01/15 16:24:51
そんな事しなくてもバッチファイルでregコマンドを呼べばいいじゃん
568:デフォルトの名無しさん
10/01/15 16:29:58
>>566はreg.exeで.regファイルが読み書き出来るのを知らないんでしょ
569:デフォルトの名無しさん
10/01/15 16:40:22
プロシージャ呼び出しじゃなきゃいや。という理由であったとしても、
もRPCの仕組み知っていれば意味無い事がわかるし。
570:デフォルトの名無しさん
10/01/15 16:47:40
もRPCって何?
571:デフォルトの名無しさん
10/01/15 17:32:15
>>566
MSDNとか調べると一番嫌なのは、結果的にも取り敢えず知らなくて
も良かったことまで調べなければならなくなること。
これは辛いよね。確かに。フラストレーションが滅茶苦茶溜まる。
>>568
Wsh知ってるんだったらReg.exeも当然知ってるだろうし
当然バッチも使った上でのWsh推奨だろ
VBScriptは型が無いようであるVariantが標準型だからC++プログラマ
にとってはJavaScriptよりか使いやすいんじゃないかと
572:デフォルトの名無しさん
10/01/15 17:57:54
レジストリキーとファイル名を引数にコマンドを実行するだけのスクリプトに型なんて関係無いでしょうが
知らないのに無理にレスしなくていいよ
573:デフォルトの名無しさん
10/01/15 17:59:55
とりあえず>>566=>>571が頭悪いのは分かった
574:デフォルトの名無しさん
10/01/15 18:12:22
>>571
君はプログラマに向いてない
転職をおすすめする
575:デフォルトの名無しさん
10/01/15 18:31:40
そもそもJavaScriptとJScriptを混同している時点で終わってる。
576:デフォルトの名無しさん
10/01/15 18:39:56
MSDNとか調べると一番嫌なのは、
Dr.GUIとかいうアホなキャラが
うだうだ御託並べた駄文読まされた挙句
それが探してるものと全然関係ない話題だと気付いたとき
577:デフォルトの名無しさん
10/01/15 18:51:49
いや、それはもっと早い段階で気付くべき
578:デフォルトの名無しさん
10/01/15 19:00:54
検索が下手な気がする
Win32内に絞り込んでおけばその手のゴミは拾わないはず
579:デフォルトの名無しさん
10/01/15 19:29:48
切削されたgoogle経由の検索が好まれる所以
580:デフォルトの名無しさん
10/01/15 19:43:49
MSDN検索でWin32&COMを指定した方がいい
google経由はノイズが多すぎてうざい
581:デフォルトの名無しさん
10/01/15 19:45:36
っつーか Dr.GUY ってなんであんなにおしゃべりなんだ?
そもそもあんなもの MSDN に要らんだろ?
582:デフォルトの名無しさん
10/01/15 19:52:05
Dr.GUYってのはわざとじゃなくて素で間違えたな
583:デフォルトの名無しさん
10/01/15 19:56:34
検索できない馬鹿の言い訳は見苦しいので終了
584:デフォルトの名無しさん
10/01/15 20:02:16
大して知識も無いド素人がうだうだ御託並べた駄レスの方が迷惑です
585:デフォルトの名無しさん
10/01/15 20:23:50
馬鹿は使うな!
以上!
586:デフォルトの名無しさん
10/01/15 20:35:33
馬鹿は使うな!
以上!
587:デフォルトの名無しさん
10/01/15 20:44:09
馬鹿は使うな!
以上!
588:デフォルトの名無しさん
10/01/15 21:06:34
馬鹿は使うな!
以上!
589:デフォルトの名無しさん
10/01/15 21:10:56
いくら大事なことだからって4回も言わなくていい
590:デフォルトの名無しさん
10/01/15 21:16:21
いくら言ったところで当の本人が自覚してないから無駄
591:デフォルトの名無しさん
10/01/15 21:42:19
>馬鹿は使うな!
>以上!
うわっ誰も使えねえ!!!
592:デフォルトの名無しさん
10/01/15 21:50:06
馬鹿以外は使えますが、何か?
593:デフォルトの名無しさん
10/01/15 23:57:17
そうだね。
使えないのはお前らだけだね。
594:デフォルトの名無しさん
10/01/16 00:04:59
ホント、役に立たんスレだな w
学生さんは回答やめたら?
595:デフォルトの名無しさん
10/01/16 00:29:21
と、このスレ一番の馬鹿が申しております
596:デフォルトの名無しさん
10/01/16 00:36:25
今時JScriptってもしかしてJavaをJ++だと未だに言う人?
597:デフォルトの名無しさん
10/01/16 00:37:16
さあ、必ず反論しないと気が済まない馬鹿が来ましたよ〜
598:デフォルトの名無しさん
10/01/16 00:38:53
>>566=>>571=>>596
こいつが消えればスレは平和になる
599:デフォルトの名無しさん
10/01/16 00:42:23
ん?鋭い指摘でもしたつもり?
600:デフォルトの名無しさん
10/01/16 00:42:53
今時っていうかWindows7でも.jsの説明にJScriptと書いてあるんですが(笑)
Windowsが存在しない時代から来た未来人ですか?
601:デフォルトの名無しさん
10/01/16 00:45:44
・モーダルループを知らない
・reg.exeを知らない
・JScriptを知らない
・MSDNの検索機能を知らない
602:デフォルトの名無しさん
10/01/16 00:48:44
ここまで恥を晒しながらも平然と書き込みできるのが信じられない
603:デフォルトの名無しさん
10/01/16 00:49:48
人工知能だろ
604:デフォルトの名無しさん
10/01/16 00:51:19
人工”知能”を名乗るな
605:596
10/01/16 00:52:45
自己解決しました
606:デフォルトの名無しさん
10/01/16 01:53:59
>>605
どうやって解決したか教えて。
607:596
10/01/16 02:04:16
歴史の教科書を読み返しました
ちなみに私は2077年から来ました
608:デフォルトの名無しさん
10/01/16 02:23:59
>>607
歴史の教科書にJScriptが載ってるのですか?
609:デフォルトの名無しさん
10/01/16 02:46:18
Webの歴史書に決まってるだろ
610:デフォルトの名無しさん
10/01/16 02:50:43
古墳から出土しました
611:デフォルトの名無しさん
10/01/16 06:10:38
APIでレジストリ扱うんだったら、仮想PCにWin2000とか
インストールしてそこで慣れてから。開発マシンとは言え
リアルPCではやらんほうがいい。
reg.exe+バッチだと文字列のきめ細かい操作が絡むとたちまち
面倒になってくる。第一.regファイルもMS内部仕様のファイル
なんで扱わないで済ませられるんだったらそうしたほうがいい。
WSHを使う場合、J(ava)Script/VBScriptの選択があるがどち
らでもお好きなほうで
612:デフォルトの名無しさん
10/01/16 07:52:02
構って貰いたくてわざとやってるとしか思えない。
以後の発言はコテを強制します。
613:デフォルトの名無しさん
10/01/16 07:58:26
リア小じゃねぇの?w
614:デフォルトの名無しさん
10/01/16 08:10:18
変なのが住み着いちゃったね
615:デフォルトの名無しさん
10/01/16 08:15:04
>J(ava)Script/VBScript
間違いを間違いとして認められない気性がよく表れている。
さらに全然関係ない話を挟んでごまかそうとするところとか。
616:デフォルトの名無しさん
10/01/16 08:32:19
WScript.ShellオブジェクトとかをC++で操作すればいいんじゃね?
あ、APIの話じゃないから関係ねぇかw
617:デフォルトの名無しさん
10/01/16 08:46:57
そもそも必要性が皆無
618:デフォルトの名無しさん
10/01/16 09:06:29
プログラムから.regファイルに関わろうとする必要性がね
619:デフォルトの名無しさん
10/01/16 09:09:36
regedit.exe/reg.exe/regedit2.exe等専用の形式が.regなんで
その仕様に依存したプログラムを作ろうとしているのにそもそも
問題がある。APIに依存したプログラムすら問題視されているこの
ご時勢に。
620:デフォルトの名無しさん
10/01/16 09:33:11
解決方法は以下の三つ
.regを使用せず独自の形式を使う
外部プログラムから.regを利用する
.regの構文を独自のプログラムで読み出す
で、質問の条件を満たすのは3つめのみ
以上が結論
で、wshとかテストを仮想環境でやるとか、脱線も甚だしい。
621:デフォルトの名無しさん
10/01/16 09:36:41
619はMVPだろ
質問者の狭い世界ではそんな要求されてねぇのに
622:デフォルトの名無しさん
10/01/16 10:05:58
3つめの結論を取る限りWsh.Shell オブジェクトを
使わぬ手はないね。これをする際にScriptでシミュレート
することが出来るのが嬉しいね。
レジストリをReg系APIで弄るPGのテストをリアルマシン
でするのはレジストリ飛ばして再インストールしました。
一部業務データが消えました、ごめんなさいで許される趣味で
やってる奴らだろ。Windowsプログラマなら常識以前じゃん
623:デフォルトの名無しさん
10/01/16 11:09:39
外部プログラムですら駄目だと言っている質問者にwshを利用させようとする馬鹿さ加減は、
さすがにJScriptとJavaScriptを混同するだけのことはある。
624:デフォルトの名無しさん
10/01/16 11:15:38
RegSaveKey()、RegLoadAppKey() って違うの?
625:デフォルトの名無しさん
10/01/16 11:21:18
.htaに書かれているのはJScript JavaScriptどっち?
626:デフォルトの名無しさん
10/01/16 11:27:08
Wsh.Shellと[wc]script.exeを混同しているおバカさんですか?
627:デフォルトの名無しさん
10/01/16 11:35:14
WScript.ShellとWsh.exeを混同している人よりかマシだろ
628:デフォルトの名無しさん
10/01/16 12:21:38
いい加減コテつけろよキチガイ
629:デフォルトの名無しさん
10/01/16 12:54:04
APIの枠組みだけで閉じてしまったら
(Win32) APIプログラミングはできないだろ
COMとかRDBとかを同時並行に勉強しないとな
630:デフォルトの名無しさん
10/01/16 13:13:34
Win32 APIは枠組みじゃないだろ、そもそもからしてよキチガイ
631:デフォルトの名無しさん
10/01/16 13:26:53
だからコテつけろ
632:デフォルトの名無しさん
10/01/16 13:33:49
コテつけるのはキチガイ
633:デフォルトの名無しさん
10/01/16 13:49:27
既に基地外だからコテつけろ
634:デフォルトの名無しさん
10/01/16 13:51:48
さっさとコテつけろよキチガイ
635:デフォルトの名無しさん
10/01/16 14:02:42
▄▄ ▄▄▄ █ ▄█
▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █
▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █
█▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █
█▄ █ ▄█ █▀▀█ █ █▄
▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀
▄▄▄▄▄▄ ▄▄▄
▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █
█▀ █ ▀▀█▀ ▀▄
█ █▀▀▀ █ █▄ ▀
█▄▄▄ █ ▄▄▄ ▀▀
▀ ▀▀▀
636:デフォルトの名無しさん
10/01/16 17:55:10
メッセージループと他の処理をスレッド
それぞれ別のスレッドで動かしているんだけど
他の処理スレッドからアプリを終了させるには
単純にWM_DESTROYを送るだけでいいの?
637:デフォルトの名無しさん
10/01/16 18:25:46
WM_DESTROYを送るというのが大間違い
638:デフォルトの名無しさん
10/01/16 18:31:08
>>636
スレッドを全て終了させる必要があるよ
ちなみにメッセージループを抜けるには
メッセージループを実行しているスレッド内でPostQuitMessage関数を呼べばいい
大抵はウィンドウ破棄のタイミングでアプリケーションを終了させるので
ウィンドウ破棄時に送られるWM_DESTROY内でPostQuitMessage関数を呼ぶ
だからWM_DESTROYを送ると終了できるように見える
639:デフォルトの名無しさん
10/01/16 19:46:39
練習でエディタ作ってるんですが
IMEの変換中の文字列って小さく補正?されるんでしょうか?
同じサイズの同じフォントにしたいんですが
こんな感じで2パターン試したところ変換中の文字のほうが小さくなります
LOGFONT logfont;
#if 0
HFONT default_guifont = (HFONT)::GetStockObject(DEFAULT_GUI_FONT);
::GetObjectA(default_guifont,sizeof(logfont),&logfont);
#else
::SystemParametersInfo( SPI_GETICONTITLELOGFONT,sizeof(LOGFONT),&logfont,0);
#endif
::ImmSetCompositionFont(ime,&logfont);
640:デフォルトの名無しさん
10/01/16 22:44:30
>>638
他のスレッドを終わらせるのってどうやるの?
TerminateThreadだとメモリリーク起きるんでしょ?
641:デフォルトの名無しさん
10/01/16 22:49:03
フラグでも何でも使ってリターンさせりゃいいだろ
642:デフォルトの名無しさん
10/01/16 22:51:07
ここはAPIスレなのでAPI使って回答しなさい
643:デフォルトの名無しさん
10/01/16 22:51:36
あ”?
644:デフォルトの名無しさん
10/01/16 22:54:56
あぴ♥
645:デフォルトの名無しさん
10/01/16 23:05:34
>>637
じゃあWM_CLOSEは?
646:デフォルトの名無しさん
10/01/16 23:55:08
WM_CREATEやWM_DESTROYはOSが送ってくるメッセージであって
プログラマが送るメッセージではない
647:デフォルトの名無しさん
10/01/17 01:02:34
頭が固いと640みたいな発想になるのかな
648:デフォルトの名無しさん
10/01/17 04:27:25
JScriptとJavaScript
昔はWSH専用コードがJScript
HTMLに埋め込まれているのがJavaScriptで
ほぼ通った。
しかし.NETが出て10年以上経つた現在
JScriptとはほぼJScript.NETのことを指す
でいいんじゃね?(つまりWSH専用コード
もJavaScriptと統一。同じ文法なんで)
649:デフォルトの名無しさん
10/01/17 04:58:58
コテつけろや キチガイ
650:デフォルトの名無しさん
10/01/17 05:42:55
>>647
頭が固いのではなくプリエンプティブマルチタスクOSに関する基礎知識がないものと思われる
651:デフォルトの名無しさん
10/01/17 06:49:12
>TerminateThreadを不用意に使うとメモリリークが起こったりする
原因になる
「夕焼けが出ると明日は快晴」
と同じ信頼レベルで概ね正しいが、100%正しいわけではない。
脳軟化症気味だから、ちょっとコ難しい横文字が出ると
100%正しいことなんだと、右辺と左辺を等式で
結んでしまうんじゃ?
652:デフォルトの名無しさん
10/01/17 08:04:50
このツンデレめ。下3行が「べ、べつにあなたの〜」に対応するわけだな。
653:デフォルトの名無しさん
10/01/17 11:30:41
HTMLに埋め込まれてるのもIEの場合JScript
654:デフォルトの名無しさん
10/01/17 11:34:37
URLリンク(msdn.microsoft.com)(VS.85).aspx
を見れば、MSのECMAScript実装が「JScript」である、ってことぐらいわかると思うんだけどな・・・。
当然、ブラウザだからどう、なんてのは関係ない。
655:デフォルトの名無しさん
10/01/17 11:51:14
関係はあるだろ
MSの実装がJScriptならMSのブラウザならJScriptということになる
656:デフォルトの名無しさん
10/01/17 12:00:07
なんでIEでは<script lang='JavaScript'>なんてHTML
読むと一見正常動作するように見えて実は...
というデマが流れたりしかねないんでさ
そういう些細な話はもうやめたら?
657:デフォルトの名無しさん
10/01/17 12:02:53
文脈の読めない馬鹿乙。
658:デフォルトの名無しさん
10/01/17 12:10:34
▄▄ ▄▄▄ █ ▄█
▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █
▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █
█▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █
█▄ █ ▄█ █▀▀█ █ █▄
▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀
▄▄▄▄▄▄ ▄▄▄
▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █
█▀ █ ▀▀█▀ ▀▄
█ █▀▀▀ █ █▄ ▀
█▄▄▄ █ ▄▄▄ ▀▀
▀ ▀▀▀
659:デフォルトの名無しさん
10/01/17 12:24:09
JScriptとJScript.NETは違うんだから、後者を指したいなら
JScript.NETと明示的に言うか、そうでなければ、誤解の起こらない
それなりの文脈のもとでJScriptといわなければだめだろう
660:デフォルトの名無しさん
10/01/17 12:25:33
一緒だと考えてるのはMVPくらいだろ?
661:デフォルトの名無しさん
10/01/17 12:28:05
>>640
終了用のEventを用意したり
PostThreadMessageで終了用メッセージを投げたり
662:デフォルトの名無しさん
10/01/17 12:40:56
何?JavaScriptとJScript.NETが違うって?
常識じゃん。それって
663:デフォルトの名無しさん
10/01/17 12:43:10
JavaScriptとJScriptも違うのは常識だけどな
664:デフォルトの名無しさん
10/01/17 13:10:53
SpiderMonkeyもV8もJavaScriptとは違うと言えるな。
665:デフォルトの名無しさん
10/01/17 13:12:58
SpiderMonkeyはJavaScriptだけどな。
666:デフォルトの名無しさん
10/01/17 13:24:06
JavaScriptは言語仕様であり、かつその実装のこと
ECMAScriptとはJavaScriptやJScript等の言語を共通化するために作られた言語仕様
SpiderMonkeyはJavaScriptの実装のコード名
JScriptはECMAScript互換の言語仕様及び実装のこと
まとめると
SpiderMonkeyはJavaScript
JScriptはJavaScriptではない
ECMAScriptはJScriptではないが、JScriptはECMAScriptの一種
ECMAScriptはJavaScriptではないが、JavaScriptはECMAScriptの一種
667:デフォルトの名無しさん
10/01/17 13:29:41
▄▄ ▄▄▄ █ ▄█
▄██▄▄ ▄▄▄▄▄ ▀▀▀▀▀▀█▄▄▄▄▄ █
▄█▄▄▄▄ ▀ █ ▀▀▀▀▀▀ █ █
█▄ █ ▀▀▀▀ ▀▀▀█▀▀▀ █
█▄ █ ▄█ █▀▀█ █ █▄
▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀▀
▄▄▄▄▄▄ ▄▄▄
▀▀▀▀ █▀▀ ▀▀▀▀▀█▀ █
█▀ █ ▀▀█▀ ▀▄
█ █▀▀▀ █ █▄ ▀
█▄▄▄ █ ▄▄▄ ▀▀
▀ ▀▀▀
668:デフォルトの名無しさん
10/01/17 17:30:19
APIと何の関係があるまとめなんだ?>>MVP
669:デフォルトの名無しさん
10/01/17 17:54:24
バージョンが違うだけ
670:デフォルトの名無しさん
10/01/18 02:03:36
OpenProcessで開いたプロセスの処理速度を2倍、3倍などの任意の速度へ変えたいのですが
何かそれっぽいAPIがありましたら教えてください。
671:デフォルトの名無しさん
10/01/18 02:14:26
処理速度?優先度の間違いだよな…?
優先度ならSetPriorityClassとか
CreateToolhelp32Snapshotでスレッド列挙してからSetThreadPriorityとか…
CreateToolhelp32Snapshotは今は別な方法あったような気がする
あったはず
覚えてないけど
672:デフォルトの名無しさん
10/01/18 02:27:03
いや優先度じゃなくて、よく処理速度です。
フリーのソフトを例に出すと「Ragud Mezegis」でやっているような処理です
673:デフォルトの名無しさん
10/01/18 02:41:55
dependency walkerでRagud MezegisとDLLを見た感じでは
タイマーAPIのフックしてるだけみたいだ
SetWindowsHookEx辺りで対象プロセスに侵入して
ImageDirectoryEntryToData辺りでインポートアドレステーブルを探して
VirtualProtectで書き換え可能にして
参照アドレス書き換えればいい
674:デフォルトの名無しさん
10/01/18 02:43:41
なんか難しそうですがありがとうございました
675: [―{}@{}@{}-] デフォルトの名無しさん
10/01/18 03:50:54
ファイル→プロパティ→セキュリティで表示される、 user のアクセス許可を許可、あるいは拒否
をプログラムから変更するにはどうすればよいのでしょうか?
環境は Visual C++ 2005, Windows XP です
676:デフォルトの名無しさん
10/01/18 04:03:15
aclSetEntriesInAcl 既存のACL(アクセス制御リスト)に新しいアクセス制御情報、
または新しい監査制御情報を結合することで新しいACLを作成
677:デフォルトの名無しさん
10/01/18 04:05:59
>>675
つ URLリンク(www.geocities.jp)
678:デフォルトの名無しさん
10/01/18 04:18:31
昼間は糞みたいなレスしかしないくせに
夜間は頑張るじゃないか君達
679:デフォルトの名無しさん
10/01/18 04:34:37
朝ですが
680: [―{}@{}@{}-] デフォルトの名無しさん
10/01/18 05:13:39
>>676-677
ありがとう!
挑戦してみます
681:デフォルトの名無しさん
10/01/19 01:11:45
>>641
>>661
そのスレッドでメッセージループみたいな
ブロッキング関数をwhileで回してた場合はどうするの?
682:デフォルトの名無しさん
10/01/19 01:29:03
ブロックしない方法にしたらいいじゃないか
683:デフォルトの名無しさん
10/01/19 01:31:41
何がブロックしてるかによって解決方法は違うんじゃね。
GetMessageだったらPostすればいいし、
イベントオブジェクトなら持ってる奴が所有権放せばいい。
ブロッキング関数なら非ブロッキング関数使うなり。
万能解を求めるから強引になるんじゃないの?
頭やわらかく行こうぜ。
684:デフォルトの名無しさん
10/01/19 02:07:31
standby listに無理やり読み込ませるAPIみたいなものってないの?
685:デフォルトの名無しさん
10/01/19 02:44:41
無いね。
686:デフォルトの名無しさん
10/01/19 20:21:42
エディットやリストボックスを画面上から消すにはどうすればいいんだ?
DestroyWindowてのを試したが何も起きなかった
687:デフォルトの名無しさん
10/01/19 20:55:04
>>686
エディットやリストボックスのウィンドウハンドルが合っているか確認する。
エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。
688:デフォルトの名無しさん
10/01/19 21:30:27
>エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。
どういうこと?コントロールを生成したスレッドじゃないと消せないってことなの?
689:デフォルトの名無しさん
10/01/19 21:54:05
別のスレッドで作成したウィンドウを DestroyWindow 関数で破棄することはできません。
690:デフォルトの名無しさん
10/01/20 09:09:42
ウィンドウのサイズ変更で、
縮小できるサイズを制限する方法教えてください
691:デフォルトの名無しさん
10/01/20 09:45:30
GETMINMAXINFO
692:デフォルトの名無しさん
10/01/20 20:01:14
CreateWindow関数をでテキストボックスを作成し
SetWindowTextでボックスに文字を入れたいのですが
ボックス内をクリックしないとSetWindowTextで入れた文字が画面に描画されません
InvalidateRect関数で再描画をしてみたのですがやはり反映されないようです・・・
どのようにすれば、テキストボックス内に文字をすぐ描画することができますか?
693:デフォルトの名無しさん
10/01/20 21:14:49
>>692
SetWindowTextだけで反映するよ
static HWND hEdit;//or グローバルでHWND hEdit;
・・・
hEdit = CreateWindow...
・・・
SetWindowText(hEdit,".....");
確認してみて。
694:デフォルトの名無しさん
10/01/20 21:38:30
>>693
ちょっとやってみます。
ありがとうございます。
695:デフォルトの名無しさん
10/01/21 22:49:21
キーボードで左右上下に何かを移動させるようなゲームを作りたいんだけど
キー入力がある度に背景のマップも再描画しないとならないの?
696:デフォルトの名無しさん
10/01/21 22:50:01
無効じゃない領域は再描画しなくていいよ
697:デフォルトの名無しさん
10/01/21 23:05:35
スクロールするなら移動して背景について新たに表示が必要になった部分だけ描画する
698:デフォルトの名無しさん
10/01/21 23:27:13
IMEパッドみたいにマウスで文字を書くプログラムを作りたいんだけど
MouseMoveと何を使えばいいですか?
マウスで直線を描くプログラムならできるのですが・・・
699:デフォルトの名無しさん
10/01/21 23:31:45
>>698
直線で曲線を近似すればいいと思うよ。
700:デフォルトの名無しさん
10/01/21 23:54:23
>>699
マウスポインタの始点と終点をLineTo関数で繋ぐことしかできないんで・・・
どうすれば曲線の近似をかけますか?
701:デフォルトの名無しさん
10/01/22 00:04:42
>>700
俺とて素人だから大きなことは言えないが
たとえば0.1秒ごとに点を取ってつなぐとか。
702:デフォルトの名無しさん
10/01/22 00:06:54
試しにさぁ
MouseMoveが来るたびにx,yにSetPixelしてごらんよ
点が集まれば線になることは分かるだろ
点をでかくするのもいいだろう
703:デフォルトの名無しさん
10/01/22 00:11:29
本に書いてあった方法だが、>>702のようにすると飛び飛びの点々になるだけだから、
MouseMoveでLineToを呼べばちゃんと繋がるとのこと
704:デフォルトの名無しさん
10/01/22 00:12:00
GDI+のGraphics::DrawCurveならスプラインが描画できるな。
705:698
10/01/22 00:45:09
timer使ったりしてるんですけどなかなかうまくいきません・・・
けど、いろいろ試そうと思います。
みなさん、ありがとうございます。
706:デフォルトの名無しさん
10/01/22 01:43:50
case WM_TIMER
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);
ってできないんだっけ?
707:698
10/01/22 02:42:09
あ、linetoを2回使ったらできました!
皆さんのおかげです。
ありがとうございました。
708:デフォルトの名無しさん
10/01/22 03:19:24
マウスで曲線描く場合
一般的には始点制御点終点の3点からベジエ曲線を描くと比較的簡単
Wikipedia項目リンク
709:デフォルトの名無しさん
10/01/22 03:45:56
>>706
LPARAMは常にマウス座標が入ってんのか
面白いw
710:デフォルトの名無しさん
10/01/22 19:04:37
GetMessagePosとかなんとか
711:デフォルトの名無しさん
10/01/22 21:52:11
TRUEって打とうと思ったのにTERUってなっててワロタんですがどうしたらいいですか?
712:デフォルトの名無しさん
10/01/22 21:58:34
#define TERU TRUE
713:デフォルトの名無しさん
10/01/23 01:02:57
座標xが0〜10yが0〜10
の範囲に線が引かれているかどうか確認するプログラムを作りたいのですが
どうすればいいか思いつきません、誰か知恵を貸してください
714:デフォルトの名無しさん
10/01/23 01:17:54
お前センス無いからもう諦めた方がいい
715:デフォルトの名無しさん
10/01/23 01:37:44
そこをなんとか、頼みます
716:デフォルトの名無しさん
10/01/23 02:06:32
>>715
一度その線を描き
GetPixelの類で(0,0)〜(10,10)までの座標の点色を1個1個確かめるという
バカでもわかる方法があるけど
まともなレスを求めるなら
線にも色々あるのでどんな線なのか
0〜10までの刻み幅はどの程度なのか
端数の処理方法はどうなってるのか
このあたりは最低限欲しいところ。
717:デフォルトの名無しさん
10/01/23 02:25:02
すみません
線はLineTo関数で書く普通の線です。
例えば、100*100ピクセルの正方形内にどんな形でもいいので線が引かれていたら1を出力
線が引かれていなかったら0を出力するみたにしたいです。
説明が下手ですみません。
718:デフォルトの名無しさん
10/01/23 02:37:12
>>717
線数を数える変数でも作って、LineToで線を描くときにカウントするのは駄目なの?
正方形の範囲外にも線が引かれる可能性があるなら、線を描く時にマウスの座標で範囲チェックも実施するとか。
719:デフォルトの名無しさん
10/01/23 02:51:04
>>717
線分&矩形のあたり判定なので
レーザーアリシューティングゲームのソースでも見なさい
速さや精度が必要ないなら
いったん描画してGetPixelで調べるのがいちばん簡単
720:717
10/01/23 04:49:14
レスありがとうございます
GetPixcelでやって見ようと思うんですが
RGBの値をうまく取得できません。すべて255,255,255になってしまいます。
下のようにやったのですが、何がいけないのでしょうか?
COLORREF color;
hdc=BeginPaint(hWnd,&ps);
color=RGB(0,0,255);
SetPixel(hdc,10,10,color);
int r=GetRValue(GetPixel(hdc,10,0));
int g=GetGValue(GetPixel(hdc,10,0));
int b=GetBValue(GetPixel(hdc,10,0));
wsprintf(buff,TEXT("%d %d %d"),r,g,b);
MessageBox(NULL,LPWSTR(buff),NULL,MB_OK);
721:デフォルトの名無しさん
10/01/23 05:14:33
>>720
10,10 に 0,0,255をセットしつつも
10,0の座標を見てる
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5257日前に更新/178 KB
担当:undef