Zdravím. Na úvod bych chtěl podotknout, že já jsem ve VB úplný začátečník. Ta rada, že by se čekání mělo místo "Sleep" řešit pomocí událostí je sice fajn, ale jak na to. To jsem se tu nedočetl. :-) Vyrobil jsem si jednoduchý prográmek (můj první), od kterého očekávám, že mi bude "číhat" někde na pozadí, a když dostane "nějaký" podnět z vnějšku (po síti), provede PrintScreen a uloží jej "někam" do souboru. (Ten já si obratem zase po síti stáhnu). Toť vše. Většinu kódu jsem vlastně opsal právě z rad těch, kteří už VB umí. Až na to dálkové spouštění. Pokud používám naprosto diletantské metody, tak se omlouvám, ale lépe to zatím neumím. Program mi funguje skoro přesně tak, jak chci. Spustím jej automaticky po startu. Není nikde vidět, jen ve spuštěných procesech. CPU nijak nezatěžuje. Až na okamžik, kdy se stahuje a ukládá ten printscreen. Ale to není tak často, a je to v pohodě. Ani paměť se po záměně "Dim" za "Using" nijak neplní. Ale právě při pokusu o restart, či vypnutí PC, zůstane program "viset". Jak jsem se dočetl, právě pro pravidelné "vytuhnutí" při "Sleep". Poradíte mi prosím co s tím. Nejdůležitější pro mne je, aby prográmek co nejméně zatěžoval PC. Jde o řídící systémy strojů, a ty mají dost starostí se svými aplikacemi. Předem díky za radu. A tady je ten můj paskvil....
Public Class Form1
Private Sub MyBase_load() Handles MyBase.Load
Me.Hide()
Dim Fso As Object
Fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Znovu:
'PrintScreen se spustí po zjištění, že se v určité složce objevil určitý soubor, zaslaný tam po síti.
If Fso.FileExists("D:\Obrazovka\Scr.set") Then
'Specifikuje primární obrazovku (v případě systému s více monitory)
With Screen.PrimaryScreen.Bounds
'Vytvořit bitovou mapu v paměti požadované velikosti
Using bmp As New Bitmap(.Width, .Height, Imaging.PixelFormat.Format32bppRgb)
'Vytvořit "kreslící plátno"
Using g = Graphics.FromImage(bmp)
'Zkopírovat obsah primární obrazovky na kreslící plátno
g.CopyFromScreen(0, 0, 0, 0, New Size(.Width, .Height))
'Uložit bitovou mapu do souboru
bmp.Save("D:\Obrazovka\Scr.jpg", Imaging.ImageFormat.Jpeg)
End Using
End Using
End With
'Po uložení obrázku se smaže soubor, jehož existence PrintSceen spustila.
Kill("D:\Obrazovka\Scr.set")
End If
Threading.Thread.Sleep(1000)
GoTo Znovu
End Sub
End Class
|