ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 03:12

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2010年2月28日(日) 12:33 
コマンドボタンをクリックしたら画面をキャプチャして解析するプログラムを作っていますが 2回押さないと正常に動きません
何がおかしいのかさっぱりわからない状態です
どなたか教えてください
コード:
Sub MainWnd_CommandButton12_Click() 
    Dim Ret As Long 
                                       : 
    keybd_event(VK_SNAPSHOT,0,0,0) 
    keybd_event(VK_SNAPSHOT,0,KEYEVENTF_KEYUP,0) 
    Ret=IsClipboardFormatAvailable(CF_BITMAP) 
    if Ret = 0 then 
        return 
    endif 
     'クリップボードのデータを格納 
  Ret=OpenClipboard(NULL) 
  hBit=GetClipBordData(CF_BITMAP) 

   
投稿先が違っていたようなので再送
konisiさん すばやいお返事ありがとうございます
Sleep はすでに試したのですが変化ありませんでした
MsgBoxでIsClipboardFormatAvailableのRetを表示すると
2回押しでもBitmapを検出できなくなるので 
もう何処をどう調べればいいか解らなくなってしまいました

どうか 解決策をご指南ください


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年2月28日(日) 23:09 
keybd_event()を呼んだ後にメッセージを処理させます。
コード:
'ボタンが押された
Sub MainWnd_CommandButton1_Click()
  keybd_event(VK_SNAPSHOT, &h79, KEYEVENTF_EXTENDEDKEY, 0)
  keybd_event(VK_SNAPSHOT, &h79, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0)
  DoEvents()
  
  If IsClipboardFormatAvailable(CF_BITMAP) <> 0 then 
    MessageBox(hMainWnd,"ok",0,0)
   End If
End Sub

Function DoEvents()
  Dim m As MSG
  While PeekMessage(m,NULL,0,0,PM_REMOVE)
	TranslateMessage(m)
	DispatchMessage(m)
  Wend
  DoEvents= TRUE
End Function


通報する
ページトップ
   
投稿記事Posted: 2010年3月01日(月) 23:30 
ご指導ありがとうございます

なにぶん素人なため とりあえずコピペでコンパイルしてみましたが

うまくいかず 2回クリックでも読めなくなりました

知らない コードだらけなので 一つずつ調べてみます


通報する
ページトップ
   
 記事の件名: 解決しました
投稿記事Posted: 2010年3月01日(月) 23:59 
HSABPさん ありがとうございました

konisiさんのご指導のあとで 自分なりにタイミングを疑って

その他のコマンドを前後させていたときに OpenClipBord が

2行になってしまったのが原因でした ほんとに ど素人なミスで

反省しております

本当に ありがとうございました 


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[15人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean