Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click Try
Using pc As PerformanceCounter = New PerformanceCounter("System", "System Up Time") pc.NextValue() label1.Text = TimeSpan.FromSeconds(pc.NextValue()).ToString() End Using
Catch ex As Exception label1.Text = "00:00:00" End Try End Sub End Class
Imports System.Runtime.InteropServices
Imports System.Text
Public Class Form1
<DllImport("winmm.dll")> _
Private Shared Function mciSendString(ByVal command As String, ByVal buffer As StringBuilder, ByVal bufferSize As Integer, ByVal hwndCallback As IntPtr) As Integer
End Function
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
'File Open
Dim ofd As OpenFileDialog = New OpenFileDialog
ofd.Filter = "WAV File(*.wav) | *.wav"
If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
label1.Text = ofd.FileName
End If
End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
'Play
If Not System.IO.File.Exists(label1.Text) Then
Return
End If
mciSendString("open """ + label1.Text + """ type mpegvideo alias MediaFile", Nothing, 0, IntPtr.Zero)
mciSendString("play MediaFile", Nothing, 0, IntPtr.Zero)
End Sub
Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
'Stop
mciSendString("Close MediaFile", Nothing, 0, IntPtr.Zero)
End Sub
End Class
* VBNET Sendkeys 를 이용한 화면 캡쳐 (Screen Capture) 예제...
- 사용한 컨트롤 : Button 2개, PictureBox 1개
전체 소스 코드
Form1.vb
Public Class Form1
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
'Alt+PrntScr 키 누른 효과
'SendKeys.SendWait("%{PRTSC}")
'PrntScr 키 누른 효과
SendKeys.SendWait("{PRTSC}")
'클립보드에서 PrntScr 키로 화면 캡쳐한 이미지 얻어내기
Dim ig As Image = Clipboard.GetImage()
If ig Is Nothing Then
Return
End If
'PictureBox 에 Image 표시
pictureBox1.Image = ig
'PictureBox 화면 갱신
pictureBox1.Refresh()
End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
'Picture Box 이미지 가져 오기
Dim bt As Bitmap = New Bitmap(pictureBox1.Image)
Dim sfd As SaveFileDialog = New SaveFileDialog()
sfd.Filter = "JPG File(*.jpg) | *.jpg"
If sfd.ShowDialog() = DialogResult.OK Then
bt.Save(sfd.FileName)
End If
End Sub
End Class
다음은 마이크로소프트 사에서 제공하는 문서 내용 가져온 Sendkeys 명령 KeyCode
SHIFT, CTRL 및 ALT 키 조합을 사용 하 여 결합 된 키를 지정 하려면 하나 이상의 다음 코드를 사용 하 여 키 코드 앞에 야 합니다.
테이블 2키코드
SendKeys클래스는 Windows Vista에서 실행되는 애플리케이션에서 사용할 수 있도록 .NET Framework 3.0에서 업데이트되었습니다.Windows Vista의 향상된 보안(사용자 계정 컨트롤 또는 UAC라고 함) 때문에 이전 구현이 예상대로 작동하지 않습니다.
SendKeys클래스는 타이밍 문제에 취약하며, 이를 해결하기 위해 일부 개발자가 노력해야 했습니다.업데이트된 구현도 타이밍 문제에 취약하지만 약간 더 빠르며 해결 방법에 대한 변경이 필요할 수도 있습니다.SendKeys클래스는 먼저 이전 구현을 사용하려고 시도하며, 실패할 경우 새 구현을 사용합니다.따라서SendKeys클래스는 운영 체제마다 다르게 동작할 수 있습니다.또한SendKeys클래스가 새 구현을 사용하는 경우SendWait메서드는 다른 프로세스로 전송된 메시지가 처리될 때까지 기다리지 않습니다.
애플리케이션이 운영 체제와 관계없이 일관된 동작에 의존하는 경우 app.config 파일에 다음 애플리케이션 설정을 추가하여SendKeys클래스에서 새 구현을 사용하도록 강제할 수 있습니다.
*예제 결과
소스코드에서 보듯이 Alt+PrntScr 키 조합을 해서 얻어 낸 결과로 폼(Form) 화면만 스크린 캡쳐 된 모습과
이미지 파일로 저장 하는 모습 입니다. (SendKeys.SendWait ("%{PRTSC}"))
다음으로 PrntScr 키 조합을 해서 얻어 낸 결과로 폼(Form) 화면만 스크린 캡쳐 된 모습과
이미지 파일로 저장 하는 모습 입니다. (SendKeys.SendWait ("{PRTSC}"))
-WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 Imports System.Management (WMI 는 현재 실행중인 프로세스 조회를 하기 위해)
- 사용된 컨트롤: Button 2개, 리스트뷰 1개
전체 소스 코드
Form1.vb
Imports System.Management
Public Class Form1
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
'Search
Dim strQry As String = "Select Name, ProcessID, ExecutablePath, WorkingSetSize From Win32_Process"
Dim iCount As Integer = 1
'리스트뷰 아이템 초기화
listView1.Items.Clear()
Dim oWMI As ManagementObjectSearcher = New ManagementObjectSearcher(New SelectQuery(strQry))
For Each oItem As ManagementObject In oWMI.Get()
Try
Dim lvi As ListViewItem = New ListViewItem()
lvi.Text = iCount.ToString()
lvi.SubItems.Add(oItem.GetPropertyValue("Name").ToString())
listView1.Items.Add(lvi)
iCount += 1
Catch ex As Exception
End Try
Next
End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
'Kill
Dim lvi As ListViewItem = listView1.FocusedItem
'해당 프로세스 이름 가져 오기 (***.exe -> *** 로)
Dim strTmp() As String = lvi.SubItems(1).Text.Split("."c)
Dim pcProcess() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessesByName(strTmp(0))
If pcProcess.Length > 0 Then
pcProcess(0).Kill()
MessageBox.Show("선택된 해당 프로세스를 종료 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
'New Search...
button1_Click(Nothing, Nothing)
Else
MessageBox.Show("선택된 해당 프로세스는 실행 되지 않았습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
End Class
Public Class Form1
Dim btMain As Bitmap
Private Sub btTSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btTSC.Click
'Total Screen Capture
btMain = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
Using g As Graphics = Graphics.FromImage(btMain)
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, _
Screen.PrimaryScreen.Bounds.Y, _
0, 0, _
btMain.Size, _
CopyPixelOperation.SourceCopy)
'Picture Box Display
pbMain.Image = btMain
End Using
End Sub
Private Sub btFilesave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btFilesave.Click
'File Save
If Not btMain Is Nothing Then
Dim sfd As SaveFileDialog = New SaveFileDialog()
sfd.Filter = "JPG File(*.jpg) | *.jpg"
If sfd.ShowDialog() = DialogResult.OK Then
btMain.Save(sfd.FileName)
End If
End If
End Sub
End Class
If Not webBrowser1.Document Is Nothing Then Dim hdDOC As HtmlDocument = webBrowser1.Document Dim hecArray As HtmlElementCollection = hdDOC.GetElementsByTagName("h1")
-WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 Imports System.Management
- 사용한 컨트롤 : ListView 1개, Button 2개
전체 소스 코드
Form1.vb
Imports System.Management
Public Class Form1
Dim mewWatcher As ManagementEventWatcher
Dim strUSBDriveName As String
Dim strUSBDriveLetter As String
Dim iCount As Integer = 0
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
CheckForIllegalCrossThreadCalls = False
End Sub
Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)
MyBase.OnClosed(e)
If Not mewWatcher Is Nothing Then
mewWatcher.Stop()
mewWatcher.Dispose()
End If
End Sub
Sub mewWatcher_EventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
Dim mbo1 As ManagementBaseObject
Dim mbo2 As ManagementBaseObject
mbo1 = CType(e.NewEvent, ManagementBaseObject)
mbo2 = CType(mbo1("TargetInstance"), ManagementBaseObject)
Select Case mbo1.ClassPath.ClassName
Case "__InstanceCreationEvent"
If mbo2("InterfaceType").ToString() = "USB" Then
strUSBDriveName = mbo2("Caption").ToString()
strUSBDriveLetter = mbo2("Name").ToString()
Dim lvi As ListViewItem = New ListViewItem()
lvi.Text = (iCount + 1).ToString()
lvi.SubItems.Add(strUSBDriveName + " : " + strUSBDriveLetter + " 연결 되었습니다.")
listView1.Items.Add(lvi)
iCount += 1
End If
Case "__InstanceDeletionEvent"
If mbo2("InterfaceType").ToString() = "USB" Then
If mbo2("Caption").ToString() = strUSBDriveName Then
Dim lvi As ListViewItem = New ListViewItem()
lvi.Text = (iCount + 1).ToString()
lvi.SubItems.Add(strUSBDriveName + " : " + strUSBDriveLetter + " 해제 되었습니다.")
listView1.Items.Add(lvi)
iCount += 1
strUSBDriveLetter = ""
strUSBDriveName = ""
End If
End If
End Select
End Sub
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
'Start
'ManageMentEventWatcher 가 null 이면 생성...
If mewWatcher Is Nothing Then mewWatcher = New ManagementEventWatcher()
Dim weQuery As WqlEventQuery = New WqlEventQuery("SELECT * FROM __InstanceOperationEvent WITHIN 1 " + "WHERE TargetInstance ISA 'Win32_DiskDrive'")
mewWatcher.Query = weQuery
'Event Create
AddHandler mewWatcher.EventArrived, AddressOf mewWatcher_EventArrived
mewWatcher.Start()
End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
'Stop
If mewWatcher Is Nothing Then Return
mewWatcher.Stop()
mewWatcher.Dispose()
End Sub
End Class