Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Command1_Click()
Clipboard.Clear
Form2.Picture1.AutoRedraw = True
Form1.SetFocus
keybd_event vbKeySnapshot, 0, 0, 0
Do While Clipboard.GetFormat(vbCFBitmap) = False
DoEvents
Loop
Form2.Picture1.Picture = Clipboard.GetData()
End Sub

keybd_eventを使って、こんな感じでForm2のピクチャーにForm1を貼付けしたいのですが、画面全体がコピーされてしまいます。
アクティブウィンドウのみコピーするにはどうしたら良いですか?

このQ&Aに関連する最新のQ&A

doevents」に関するQ&A: DoEventsは意味ない?

A 回答 (1件)

過去ログにあります



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=185224
    • good
    • 0
この回答へのお礼

どうやらWIN/NTではわたしのプログラムではダメみたいです。
教えて頂いた方法で解決できました。
どうもありがとうございました。

お礼日時:2002/03/05 11:52

このQ&Aに関連する人気のQ&A

doevents」に関するQ&A: DoEvents関数って何?

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q【keybd_event】について

VB6,Windows XPにて動作するAPを作成しています。

現在【半角カナ入力】を行うAPを作っています。
フォーム上に、カナが表示されたイメージコントロールとテキストボックスがあり、
イメージコントロールをクリックされた時に、対応するカナをテキストボックスに表示したいのですが、【SendKeys】は使用したくありません。
調べた結果、【keybd_event】を使用すれば実現出来そうだと思ったのですが、keybd_eventで半角カナを表示するにはどうすればいいのでしょうか?
数字の表示は問題なく出来ています。

ご存知の方教えて頂けると幸いです。
よろしくお願いします。

Aベストアンサー

普通に文字列操作するのもなんら変わりはないですが。

Text1 = Left(Text1, Text1.SelStart) & "カ" & Mid(Text1, Text1.SelStart + Text1.SelLength + 1)


>その動きを実現するには、文字列連結での制御より、
>SendKeysやkeybd_eventを使用する方が簡単だと思ったからなのです。

入力対象のコントロールにフォーカスを当てたりIMEをいじったりするほうが、よっぽど動きがあいまいで面倒かと思いますけど。

QForm_Load と Form_Activate のタイミング

あるデータ入力アプリを作っています。
親フォーム(Form0)で番号を決め、子フォーム(Form1,Form2,Form3,Form4) でデータ入力し、それぞれの子フォームを出るとき(Unload Me) に、変数にsaveしています。それを親フォーム(Form0)で登録を選択したとき、入力データをチェックしてDBに格納しています。
すでにDB格納済のデータの場合、親フォームでDBから変数に読み込み、子フォームのForm_Loadで展開しています。
そこで困っているのは、親と子のフォームを行き来するときにデータの表示で前のが残っていたり、消えてしまったりします。
Form_LoadとForm_Activateを通過するタイミングが、ちゃんと理解できていないためコードの記述位置が不適切なのだと思います。

Form_Load と Form_Activate の実行タイミングについて、お教えください。

Aベストアンサー

Form_Loadは、フォームがロードされたときです。
ロードされる条件は、
1.フォームがスタートアップに指定されているとき、アプリが実行された直後。
2.Show メソッドが呼ばれたとき
3.Loadメソッドが呼ばれたとき
4.フォームに貼り付けられたコントロールのプロパティが参照されたとき
5.フォームに貼り付けられたコントロールのメソッドが呼ばれたとき
です。

ただし、一度ロードされると、Unloadされるまで呼ばれません。


Form_Activateは、フォームがアクティブになったとき、つまり、キャプション(ウィンドウのタイトルバー)の色が変わったときです。

QForm_LoadでDB接続ではなく、Form_Load完了でDB接続したい

VB.NETです。

現在、Form_LoadにDB接続のコードを記述していますが、Form_Load完了後に、DB接続の命令を実行することはできますでしょうか?
つまり、Form_Loadが完了したら、DB接続のコードが実行されるようにしたいのです。

理由は、DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。
また、DB接続エラーとなった場合、Form_Loadによる画面が出る前に、エラーメッセージがポップアップされてしまう。
これらを回避したいのです。

良い方法ご存知の方がいましたら、ご教授下さいませ。
よろしくお願い致します。

Aベストアンサー

こんにちは、じゃんぬねっと です。

Activate イベントは、TopMost にしていると、
FormLoad イベントより先に発生することがあり、お勧めできません。
フラグも必要になりますし。

> DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。

非同期に実行しては如何でしょう? スレッドを使用するとか。
また、別の画面を表示しておく手もあります。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QForm1のボタンを押すとForm2が表示されて、Form1をクリックしたらBeep音

初歩的な質問ですみません。
タイトルそのまんま(しかも長い --;)なんですが。
よく見かけるもので、Form1でボタンを押すとForm1より小さいForm2が表示されて、そこでOKボタンを押さないとForm1に戻れなくて、その時にForm1の方をクリックするとBeep音が出る、っていうのがありますよね。あれはどうなっているんですか?Form2の表示まではできるんですけど、その先が分かりません。教えて下さい。お願いします。

Aベストアンサー

Form2.Show vbModal

でOKです。


人気Q&Aランキング

おすすめ情報