タイトル : Re^8: クリップボードに自動保存 投稿日 : 2006/03/22(Wed) 22:07 投稿者 : POD
YASさんいろいろ調べてみた結果、CreateObject("Shell.Application").ToggleDesktop()とい う1文でデ スクトップ画面の表示ができるようです。但し、完全にデスクトップが表示される前にコピーがとられ る ようで毎回タイミングによりクリップボードにコピーされる画像が違ってしまいます。CreateObject ("Shell.Application").ToggleDesktop()の後にウェイトをかませる。もしくは完全にデスク トップが表 示されるまで後の処理を行わないようにできればいいのですが...... なにぶんあまり経験がありませんのでこのようにしたらプログラミングがもっとすっきりする等のアド バ イスがあればお願いします。 Private Sub CheckBox5_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckBox5.MouseClick If CheckBox5.Checked = True Then Dim WndState As FormWindowState = Me.WindowState Me.WindowState = FormWindowState.Minimized Me.ShowInTaskbar = False CreateObject("Shell.Application").ToggleDesktop() Dim ScreenSize As Size = Screen.PrimaryScreen.Bounds.Size Using Bmp As New Bitmap(ScreenSize.Width, ScreenSize.Height) Using G As Graphics = Graphics.FromImage(Bmp) G.CopyFromScreen(0, 0, 0, 0, ScreenSize) Clipboard.SetImage(Bmp) End Using End Using Dim iData As IDataObject = Clipboard.GetDataObject() 'クリップボードにBMPファイルがあれば 'WorkCopyPath="C:\WINDOWS\TEMP\DiskTop.jpeg"に保存 If iData.GetDataPresent(DataFormats.Bitmap) Then Dim img As System.Drawing.Image = iData.GetData(DataFormats.Bitmap, True) 'Jpeg 形式で保存 img.Save(WorkCopyPath, System.Drawing.Imaging.ImageFormat.Jpeg) End If Me.WindowState = WndState Me.ShowInTaskbar = True End If End Sub |