• ベストアンサー

SendMessageが失敗するときがある

jmhの回答

  • jmh
  • ベストアンサー率23% (71/304)
回答No.5

> LVM_SETITEMSTATEですと成功TRUE、失敗FALSEです > はい。SendMessage() は、その「失敗 FALSE」を戻しているだけだと思います。失敗したのは、SendMessage() ではなくて、リストビューのウィンドウプロシージャーではないでしょうか? SendMessage() 呼び出し → リストビューの WindowProc() 呼び出される                                 ↓ SendMessage() が TRUE/FALSE を戻す ← WindowProc() が TRUE/FALSE を戻す # SendMessage() はキューをバイパスすると思います。

ozjp999
質問者

補足

jmhさん、解りやすご説明ありがとうございます。 それにしてもリストビューのキューをバイパスしてします原因は何が考えられますででしょうか? SCツールはアイドル状態ですので、chie65535さん、の言うキューがいっぱいと言うことは考えられないのですが・・・

関連するQ&A

  • SendMessageについて

    VERSION:VB6.0 SendMessageを使用しSQLPlusに対して文字列を送りたいのですが巧くいきません。 ↓が自身が作成したSendMessageを使用しているプログラムの一部なのですが、おかしな点や別な方法があればご教授お願いします。 '別アプリにメッセージを送る Declare Function SendMessageStr Lib "user32.dll" _ Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, _ ByVal wParam As Long, ByVal lParam As String) As Long Dim pId As Long 'プロセスID pId = Shell("SQLPlusのアドレス" & " /nolog", 1) SendMessageStr pId, WM_SETTEXT, 0, "送信する文字列" というプログラムです。 SQLPlusは起動するのですが文字列がSQLPlus側に送れず困っています。 どうかよろしくお願いします。

  • コードは間違ってないのにビルドが必ず失敗になります。

    ビルド、またはデバックなしで開始を押すと必ずエラーになります。 パソコン自体を再起動して、ビルドすると正常にビルドされます。 正常にビルドされるのはその再起動した後の最初の一回だけで、コードを追加したり変更したりしてもう一度ビルドするとエラーになります。 エラー表示内容は以下です↓ ファイル "~~~~" を "~~~~~" にコピーできません。別のプロセスで使用されているため、プロセスはファイル '~~~~~' にアクセスできません。 これはどういう意味なんでしょうか。 正常にビルドするにはどのように対処すればよろしいのでしょうか。 回答お待ちしております。

  • windows7から10へのアップデート失敗

    エラーコード80070057でupdate失敗とでます、原因と対処法教えてください

  • 録画失敗

    6日の午後の4時20分すぎの 感動は歌にのって を録画予約したが、30秒ほど別の内容が出て切れました。録画のリストには、感動は歌にのって と記されていました。国会中継が延長になって時間がずれたから録画失敗したのでしょうか。原因がわかればいいのですが

  • Secand_Rootフェ--ズで失敗しました。。

    昨日もWindows10に挑戦しましたが2回も同じエラ--で失敗に終わりました。。 エラ-番号:Oxc1900101-Ox40017, Secand-Rootフェ-ズに失敗しました。とWindows7を最初に終了後再起動した 直後に表示されました。 この原因分かる方アドバイスをお願いします。Windows7は問題なく使えてます。。

  • User32.dllの初期化に失敗エラー

    WindowsNTサーバ上で「User32.dllの初期化に失敗しました。プロセスは異常終了します」と言うエラーが発生します。 MicroSoftのサポートページを見るとレジストリを変更する事で回避すると記載されていたのですがRegedit32.exeを起動しようとしても同様のエラーが出て進みません。どう対処すれば良いかご存知の方いらっしゃいましたら是非ご教授願います。

  • インターネットからの読み込みに失敗する。

    64bit Ultimateを利用しております。 昨日、OSを買ってきてインストールしてみたところ、IEなどのインターネットに接続するアプリケーション全てにおいて「アプリケーション起動後、初回に読むアドレスは全てエラーが出る」という症状が出るようになりました。 (これの前は、XP Pro 32bitで何事もありませんでした) 例えば、Pangyaは必ず起動後は「アップデートリストの読み込みに失敗しました」のエラーが出てアップデートのお知らせ画面は「Webページへのナビゲーションは取り消されました」と出るのですが 再パッチボタンを押せば通常通り使用でき、ログインも一度コケさせてから二度目でログインできる。 IEにおいては、そのプロセス最初に読み込むアドレスは必ず「Internet Explorerではこのページは表示できません」のエラーメッセージが出るけれどもアドレスバーをクリックしてEnterを押せば 必ず読み込める(別にIEのプロセスを立ち上げればそちらでも同じことをやらされます)という症状が出ております。 一応下記のアドレスの内容を試してみた後 http://support.microsoft.com/kb/926431/ja NICが二枚認識される環境なので片方潰してみたり、ネットワークの設定が二つになっておりましたので結合してひとつにまとめてみたりしました。 対処法をご存知の方がいらっしゃいましたらお教えください。 こちらの環境は ・ネットワーク マンションタイプVDSL ルータ利用して四台接続(ルータ再起動試行済み) うち一台のみ64bit VISTAでこの症状が出る。 他はLinux二機とXP PRO一機でこの症状は出ない。 ・ネットワークデバイス K9N-PlatinumオンボードのNIC(1側をBIOSで封印中 0を利用中) 他、ネットワークに関わる拡張はありません。 よろしくお願いいたします。

  • ps と grep による監視で失敗する事例について

    始めまして。 miko_zzと申します。 現在運用中のサーバでプロセス監視をCシェルで 下記コマンドの結果により行っております。 このコマンドの結果は通常では正常に監視出来ているのですが、 極まれにプロセスは正常に起動中でもエラーを出力してしまいます。 発生条件が判明できないため発生したら目視で確認することで運用を しているのですが、原因が知りたいのでご助力お願い致します。 ちなみに発生頻度は 年に3回くらいで非定期的です。 ------------------------------------------------------------------ SET PRC_ACCOUNT = プロセスを実行したユーザ名 SET PRC_NAME = 監視するプロセス名 ps axuww | egrep ^$PRC_ACCOUNT | grep $PRC_NAME >& /dev/null if ( ${status} != 0 ) then echo "ERROR:プロセスが見つかりません" ; endif ------------------------------------------------------------------

  • Microsoft Update を何度しても「失敗しました」になってしまいます

    Win2000を使っています。 最近Microsoft Updateをすると何度やっても「失敗しまし た」マークが出てきて Updateできません。 「失敗しました」の赤い×マークのところをクリックする とエラーコード: 0x80246001 というのが出てくるので このエラーコード番号をキーワードに検索かけてみまし たが、「"0x80246001" に一致する結果がありません。」 と返ってきてしまいました。 (じゃあこのエラーコードは何??) 現在エラーの原因がわからないのでどう対処していいのか 困っています。(T^T) マイクロソフト社に問合せをする前に一度こちらでお訊ね してからと思い投稿しました。 アドバイスや対処法ご存知の方よろしくお願いいたします。

  • LVM_HITTEST

    マウス位置に存在するエクスプローラ内のアイテムを取得しようと思っております。 エクスプローラの左側のフォルダ一覧(クラス名:SysTreeView32)と右側のファイルとフォルダ名の一覧(クラス名:SysTreeView32)において、そのSysListView32内のマウス位置に存在するアイテムを取得したいのです。 なぜかというと、オリジナルアプリ内のリストビューにFTPサーバのファイル一覧を出力し、リストビューからエクスプローラへの直接ドラッグにより、サーバからローカル\TempにDLして、ドラッグ先にDLしたファイルを移動したいのです。 現状としてはLVM_HITTESTをエクスプローラ内のSysListView32に送っているのですが、こちらが送ったLVHITTESTINFO構造体のXYと、SpyでみたXYの値が違っているのです。結果としてアイテムインデックスを得ることができませんでした。 参考までに、LVM_GETITEMCOUNTはエクスプローラからも取得できました・・・ どのようにしたら、マウス位置のアイテムを取得することができるのでしょうか? 簡単に処理内容を記します。 ドラッグ時に GetCursorPos:マウス位置を取得 WindowFromPoint:マウス位置のハンドル取得 GetClassName:マウス位置のハンドルよりそのオブジェクトのクラス名を取得 以下は[クラス名=SysListView32]のときのみの処理 ScreenToClient:SysListView32をベースとした座標に変換 SendMessage: TVM_HITTESTと、LVHITTESTINFO構造体を送る 以上です。 本当は・・・ アプリはVBにて製作中なのですが、この手の質問はこちらのCの掲示板の方が回答を望めるかもと思って、こちらに質問させていただきました。Cで答えていただいて結構です。こちらでコンバートしますので。。。 どうぞよろしくお願いいたします。m(__)m