[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 09/26 11:03 / Filesize : 178 KB / Number-of Response : 859
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build85



1 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:07:21 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build84
pc12.2ch.net/test/read.cgi/tech/1259478896/

401 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:43:09 ]
もうゆるいしださくて

402 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:50:23 ]
これはひどい

403 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:02:36 ]
ム板の中では最も荒れてるスレ・・・なのかな?
元々わりと荒んだスレではあったけど、一、二年くらい前に「知らないならレスしないでください」
って書き込みが流行りだした辺りからどんどん酷くなっていったような気がする

404 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:04:05 ]
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>377
     「 ⌒ ̄ |   |    ||   (´Д` )   \  gdgdの責任取れ、この...低脳がァ――!!
     |   /  ̄   |    |/    「    \     \___________
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------    

405 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:11:25 ]
とりあえず禁句設定
★MSDN調べろ
★ググれ
★過去ログ引け
これで改善されるんでは。
このスレの過去ログが過去ログとして機能するのはBuild 50辺りまで。

406 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:13:02 ]
というかストレス溜め込みすぎだよ

407 名前:デフォルトの名無しさん [2010/01/11(月) 01:56:12 ]
結局>>127の答えは>>346でやっと出たの?

408 名前:407 [2010/01/11(月) 01:57:19 ]
間違えた、>>346>>347

409 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:07:44 ]
>>345だろ



410 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:11:07 ]
素朴な疑問










defファイル書いてる?

411 名前:407 [2010/01/11(月) 02:28:51 ]
>>409
>>346で否定されてるけどその点はどうなの?

412 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:02:06 ]
>>127の答え

Spy++で見ろ

413 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:13:29 ]
>>405
> ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
>>1に書いてあることが禁句って・・・

414 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:31:17 ]
原則準拠の掛け声だけでスレが埋め尽くされないように
>>1に原則をまとめておいて、>>1以外では
原則論を敢えて述べることは控える。

これって異常な発想か?

415 名前:407 [2010/01/11(月) 03:32:21 ]
>>412
spy++使ってキーボードのメッセージ(WM_KEYUPは除く)みたんだけどこんな感じだったよ
他にもパラメータあったけど、どの場合も変わらないから消しちゃった

//wキー
WM_KEYDOWN nVirtKey:'W' ScanCode:11
WM_CHAR chCharCode:'119' ScanCode:11

//ctrlキー
WM_KEYDOWN nVirtKey:VK_CONTROL ScanCode:1D

//ctrl+w
WM_KEYDOWN nVirtKey:VK_CONTROL ScanCode:1D
WM_KEYDOWN nVirtKey:'W' ScanCode:11
WM_CHAR chCharCode:'23' ScanCode:11

これを見るとWM_CHARが来た時chCharCode(wParam)の値が23ならctrl+wが押されたことになる??
けど文字コード見ると23はETBとか言う文字コードになってるからこれは関係ないのかな?
となると結局GetKeyState()なんて知らなかったらこれだけ見てもどうすれば良いのか分からないんじゃないの?

416 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:47:37 ]
> これって異常な発想か?
よくわかってるじゃん

417 名前:416の指示により以下はこの繰り返しに統一 mailto:sage [2010/01/11(月) 03:51:44 ]
>>1
過去ログ/MSDN/その他サイト ググレ
つまらん質問するな

418 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:51:49 ]
ググれが禁句なんて聞いたことない。w

419 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:53:28 ]
>>416のどこが指示だ?相変わらず妄想がひどいな



420 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:53:46 ]
今時ググっても、2ch関連の良くわからん質疑応答スレが
先頭に出るんですがね(蛇足だが質問も回答も間違ってることが
よくある)

421 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:57:00 ]
>>415
ctrl+wを押したときだけ特定のメッセージが来るかどうか
をspy++で見れば答えが得られるってこと
WM_KEYDOWNやWM_CHARしか飛んでないってことは
何もメッセージが割り当てられていないのが理解できる

422 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:59:20 ]
-2ch -chiebukuro
ぐらい付けるだろjk

423 名前:407 [2010/01/11(月) 04:04:54 ]
>>421
なるほど、そういうことだったのね

424 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 04:05:14 ]
前にもググれ調べろと言われてキレた基地外がいたが同じ奴かね

425 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:50:24 ]
1スレ無駄にしそうだなぁ

426 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 06:31:18 ]
「調べろ」「ググれ」を禁句とか言ってる気違いが住み着いたからなぁ

427 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 06:58:00 ]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものではありません。

アイと研究員とのやり取りに利用するスレッドではないので、
関係者以外も書きこんで下さい。

                  京都大学霊長類研究所

428 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:00:55 ]
チンパンジーならまだしもメンヘラーだからタチが悪い。

429 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:05:20 ]
>>427
むかしのアイちゃんは、聞いても無いのに色々と話をして
くれたもんだが、最近は3語しか言わなくなったなw
年をとったのか、知能が高くなったのか、オブジェクト
指向にかぶれたのか知る由もないが
とにかくSmallTalkになっちゃったね。



430 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:13:34 ]
言っても無いのに色々と妄想してくれるようになった。

431 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:20:11 ]
Win32APIのこのスレ的な定義をそろそろよろ

432 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:24:44 ]
ググレカス
ttp://ja.wikipedia.org/wiki/Windows_API

433 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:47:43 ]
ここもWikiレベル以下か...鬱

434 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:49:52 ]
wikipediaをwikiっていうな

435 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 08:00:14 ]
天才とか言っていろいろなことさせられて、初期レベルの霊長類の
わずかな記憶領域を使い尽くされて、やがて本能を侵食されて
衰弱する
動物実験はいやだな・・・

436 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:18:18 ]
風紀委員会からのお知らせです。

一般的な商用ソフトはリバースエンジニアリングを禁止しています。
spy++で調べる事は使用許諾に反するので行わないでください。

437 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:44:15 ]
spy++で調べる事はリバースエンジニアリングではないのだが、
いったい何を言ってるんだ?

438 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:45:49 ]
妄想です

439 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:47:07 ]
リバースエンジニアリングとは、ソフトウェアやハードウェアなどを分解、あるいは
解析し、その仕組みや仕様、目的、構成部品、要素技術などを明らかにすること。
プログラムの分野では、モジュール間の関係の解明やシステムの基本仕様の分析と
いった行為を含む。



440 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:50:53 ]
Spy++程度でリバースエンジニアリングだったら
タスクマネージャだってリバースエンジニアリングだろ。
どれだけ頭が悪ければ気が済むんだ?

441 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:53:33 ]
ソフトウェアのインストールフォルダをエクスプローラで開くのもリバースエンジニアリングだなw

442 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:56:26 ]
そのソフトに色々な入力を与えて出力を見るのもリバースエンジニアリングだな
システムの基本仕様の分析になるもんな

443 名前:436 mailto:sage [2010/01/11(月) 09:57:13 ]
リバースエンジニアリングって言ってみたかっただけです。ごめんなさい。

444 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:09:58 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀


445 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:57:56 ]
下手糞な文字だなあ

446 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:27:27 ]
今までの長い歴史の中で最低最悪のスレだな

447 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:31:10 ]
この流れだと次スレで最低最悪の歴史を更新するでしょう。

448 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:32:31 ]
質問が無いのがいけないんだ!!

449 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:41:46 ]
今時Win32で開発してる人は、自力で解決できる上級者か、周りが見えてない馬鹿のどちらかだから、質問が無いのが自然。



450 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:46:02 ]
質問するぐらいなら自分で探した方が早いからな

451 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:14:15 ]
MSDN4階層までは全部記憶していて当然だからな。

452 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:18:16 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

453 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:27:03 ]
msdn4階層ばっか言ってるキチガイまだいるのかw

454 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:32:37 ]
まあ実際のところMSDN4階層以内だとOverviewにも届いてない程だし
Win32プログラマにとっては知ってて当然な情報しか無いけどな

455 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:34:03 ]
          ____
         / ̄ ̄ ̄ \
      /   :::::\:::/\  
     /    。<一>:::::<ー>。 
     |    .:::。゚~(__人__)~゚j   もう許してください
     \、   ゜ ` ⌒´,;/゜
    /  ⌒ヽ゚  '"'"´(;゚ 。  
   / ,_ \ \/\ \
    と___)_ヽ_つ_;_ヾ_つ.;._


456 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:44:15 ]
コピペしなくても書けるレベルになるとMSDN4階層以内の情報は見る価値ないし、
分からないときは最初からReferenceあたりで探すようになるからね
そしてReferenceまでの階層が深すぎてイライラするw

457 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:47:11 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

458 名前:デフォルトの名無しさん [2010/01/11(月) 16:57:14 ]
MSDN4階層ってアクセラレータとかダイアログボックスとか用語の説明ばっかりじゃんw

459 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:58:28 ]
用語すらわからんやつは質問するなってことだ



460 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:01:09 ]
「ダイアログボックスって何?」

確かに、こんな質問は禁止でいいよw

461 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:02:42 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

462 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:01:59 ]
> MSDN4階層以内は質問禁止というキチガイルール
全然キチガイルールじゃなかったね

463 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:07:36 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

464 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:20:16 ]
ワロタwww
禁止に一票入れとくよw

465 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 07:39:48 ]
test

466 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:24:26 ]
aho

467 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:32:57 ]
FinderSystem Dev.がどうやってテキストを取得しているかご存知の方はいらっしゃいますか?

某アプリが表示している文字列を取得したいのですが、
実際には8文字表示されているのに
WM_GETTEXTLENGTHは4が返ってくるし、
WM_GETTEXTも100文字分指定しても先頭4文字しか取得できません。
VS2010β2付属のSpy++も4文字しか認識しません。

FinderSystem Dev.のメインウインドウのキャプションには何も表示されないのですが、
ウインドウビューアで階層をたどっていくと、ウインドウ名?の欄には正確に8文字表示されます。
どなたかヒントをください

ちなみに今のC#コードです
public static string GetWindowTextEx2(IntPtr hWnd) {
int len = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0) + 1;
StringBuilder sb = new StringBuilder(len);
SendMessage(hWnd, WM_GETTEXT, len, sb);
return sb.ToString();
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lParam);
public const int WM_GETTEXT = 0x000D;
public const int WM_GETTEXTLENGTH = 0x000E;

468 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:43:07 ]
MSDNのWM_GETTEXTの部分読んで下さい
WM_GETTEXTは万能じゃありません

コントロールによっては別のメッセージ使わないと駄目ですし
相手プロセス内で行動することも必要になってきます

469 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:44:21 ]
某アプリとか書かずにちゃんと名前書いたら?



470 名前:467 mailto:sage [2010/01/12(火) 14:10:07 ]
>>468
ありがとうございます
漁ってみます
>>469
どうせ誰も知らないだろうと思って具体的な名前は出しませんでした
カノープスのアナログキャプチャカードMTVX2005のソフト
Feather2005 Ver8.17.002の操作パネル(リモコンウインドウ)の再生位置の時刻表示です
ちなみに再生ファイル名は取れていました

471 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:21:18 ]
メッセージボックス(OKボタンのみのやつ)のOKボタンのコントロール識別子の値を教えてください
0x0400だと思ってGetDlgItemしたらNULLが返ってきました

472 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:30:42 ]
それぐらいSpy++で調べろよ・・・

473 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:20:30 ]
>>470
UIAかMSAAで取得してるんじゃね?

474 名前:467 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:27:13 ]
ふと思い立ちって、、、>>467読んだ瞬間にそう思ったよ。
まあ問題なのは、不具合は全部自分以外のバグと思っちゃうところじゃないのかな。

476 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:33:50 ]
WM_GETTEXTはA/W関係ないと思うが・・・?

477 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:43:01 ]
8文字が全て全角文字で、ANSIで8バイト、Unicodeで4文字って事だろ。
マルチバイト文字とワイド文字の違いを分かってないだけなのに
OSのせいにするその脳細胞がバグってる。

478 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:49:51 ]
XP以降のEM_SETSEL等はSendMessageAでもUnicode扱いするバグがあるんだが・・・

479 名前:467 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:20:45 ]
そもそもSendMessageの宣言は合ってるのか?

481 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:28:29 ]
OSのバグじゃなくて.NETかお前の書いたソースの問題。
とりあえずC#スレで聞いて来い。

482 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:16:09 ]
>VS2010β2付属のSpy++も4文字しか認識しません。

483 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:55:22 ]
>>479
正しく機能しないと思うなら、正しく機能するようにむりやり書いておけばいいと思うよ
APIにバグなんて意外とあるし、バグでなければどうせそのうち矛盾して直す羽目になるから

484 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:59:14 ]
宣言が間違ってる。ref が足らない。

485 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:59:48 ]
IntPtr で受けて、Masharl.PtrToStringAnsi() とかで文字列に変換しろ。

486 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:09:45 ]
バッファ確保しとかないとダメだろ。

487 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:32:19 ]
相手側の実装の問題かも

488 名前:467 mailto:sage [2010/01/12(火) 22:50:04 ]
自己解決しました

489 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:57:01 ]
マーシャリングの問題なのでAPIスレの範疇ではない



490 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:52:31 ]
>>490
ウィンドウクラスは WC_LISTVIEWW になっているかい?

492 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:57:50 ]
はい。念のため、CreateWindowExW、WC_LISTVIEWW としても実行してみましたが
同じでした

493 名前:490 mailto:sage [2010/01/13(水) 00:56:40 ]
原因が分かりました。

他の言語の GUIに リストビューを貼り付ける形で 何の言語からも手軽に 仮想リストビュー
や表示するデータを利用できるように作った DLLなのですが、その親となる相手方のコントロ
ールやウィンドウをサブクラスしていて、親(相手方)が ANSIだった為 リストビューが親に
ANSI のメッセージ(WM_NOTIFY)を送っていたようです。
間に1枚 UNICODEのコントロールを作成することで解決しました。

>>491 ありがとうございました

494 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:31:03 ]
BitBltでソースの画像より大きいサイズを指定すると
余った部分が真っ黒になるようだけど、
その部分の色を指定することは出来ないの?

495 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 02:51:59 ]
>>494
背景とソースを合成したビットマップを動的に作成してBitBltするか
ソースの画像サイズでBitBltしてから描画した画像の範囲をExcludeClipRectして最後にソースよりも大きいサイズの矩形を塗りつぶす。

496 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 02:57:51 ]
入力先はソースより大きくする理由はない
出力先が大きいなら塗り潰す

497 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:05:55 ]
>>496
StretchBltと間違えていませんか?
BitBltは入力元のサイズは指定できませんよ。

498 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:14:59 ]
指定できなくても元サイズはあるだろう
destをそれと同じサイズにすればいいだけ

499 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:23:43 ]
真っ黒になる(=ゼロクリアする)かどうかって不定じゃなかったか?
ちゃんと正しいサイズを指定しろ。



500 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:32:19 ]
>>498
じゃあこれはどういう意味ですか?
> 入力先はソースより大きくする理由はない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<178KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef