 |
|
| ดูกระทู้ก่อนนี้
:: ดูกระทู้ถัดไป
|
| ผู้ส่ง |
ข้อความ |
voyager
เข้าร่วมเมื่อ: 18 สค. 2005 ตอบ:
68 ที่อยู่: เชียงใหม่
|
ตอบ: พ. สค. 24, 2005 2:17
pm ชื่อกระทู้:
ห้องVBส่วนตัวของแมงเม่า |
 |
|
| ใครอยาก post
กระทู้เกี่ยวกับ visual basic 6.0 ทั้งที่เป็น hardware
interface หรือ miscellaneous ถ้าไม่มีใคร post ก็จะมา post เอง
555555 | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: พ. สค. 24, 2005 3:37
pm ชื่อกระทู้:
|
 |
|
Code of the day: ใช้
SetCursorPos API กำหนดตำแหน่ง curser
'Module
Declare Function SetCursorPos Lib "user32.dll" (ByVal x As
Long, ByVal y As Long) As Long
'Form: Private Sub
Command1_Click() Dim SetCurPos As Long If
IsNumeric(Text1) Then If IsNumeric(Text2) Then
SetCurPos = SetCursorPos(Text1, Text2) Else MsgBox
"อย่าลืมว่าต้องใส่ทั้งสองช่อง!" End If Else MsgBox
"ใส่ตัวเลขเท่านั้นจ้า!" End If End Sub
ประยุกต์: โปรแกรม auto click | |
| กลับไปข้างบน |
|
 |
Bluejoob
เข้าร่วมเมื่อ: 24 สค. 2005 ตอบ:
2 ที่อยู่: 80/38 บางเขน
|
ตอบ: พ. สค. 24, 2005 5:52
pm ชื่อกระทู้:
|
 |
|
| อยากได้โปรแกรมหรือcode vb6
ที่ดึงภาพมาจาก webcam | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: พ. สค. 24, 2005
10:30 pm ชื่อกระทู้:
|
 |
|
Const WM_CAP As Integer = &H400 Const
WM_CAP_DRIVER_CONNECT As Long = WM_CAP + 10 Const
WM_CAP_DRIVER_DISCONNECT As Long = WM_CAP + 11 Const
WM_CAP_EDIT_COPY As Long = WM_CAP + 30 Const
WM_CAP_SET_PREVIEW As Long = WM_CAP + 50 Const
WM_CAP_SET_PREVIEWRATE As Long = WM_CAP + 52 Const
WM_CAP_SET_SCALE As Long = WM_CAP + 53 Const WS_CHILD As
Long = &H40000000 Const WS_VISIBLE As Long =
&H10000000 Const SWP_NOMOVE As Long = &H2
Const SWP_NOSIZE As Integer = 1 Const SWP_NOZORDER As
Integer = &H4 Const HWND_BOTTOM As Integer = 1 Dim
iDevice As Long Dim hHwnd As Long Private Declare
Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam
As Any) As Long Private Declare Function SetWindowPos Lib
"user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long,
ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy
As Long, ByVal wFlags As Long) As Long Private Declare
Function DestroyWindow Lib "user32" (ByVal hndw As Long) As
Boolean Private Declare Function capCreateCaptureWindowA
Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal
dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal
nWidth As Long, ByVal nHeight As Integer, ByVal hWndParent As
Long, ByVal nID As Long) As Long Private Declare Function
capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As
Long, ByVal lpszName As String, ByVal cbName As Long, ByVal
lpszVer As String, ByVal cbVer As Long) As Boolean
Private Sub cmdSave_Click() Dim bm As Image '
Copy image to clipboard SendMessage hHwnd,
WM_CAP_EDIT_COPY, 0, 0 ClosePreviewWindow
picCapture.Picture = Clipboard.GetData
CommonDialog1.CancelError = True
CommonDialog1.FileName = "Webcam1"
CommonDialog1.Filter = "Bitmap |*.bmp|JPEG |*.jpeg" On
Error GoTo NoSave CommonDialog1.ShowSave SavePicture
picCapture.Image, CommonDialog1.FileName NoSave:
cmdStop.Enabled = False cmdSave.Enabled = False
cmdStart.Enabled = True End Sub
Private Sub
cmdStart_Click() iDevice = lstDevices.ListIndex
OpenPreviewWindow End Sub
Private Sub
cmdStop_Click() ClosePreviewWindow cmdStop.Enabled =
False cmdSave.Enabled = False cmdStart.Enabled = True
End Sub
Private Sub Form_Load() LoadDeviceList
If lstDevices.ListCount > 0 Then
lstDevices.Selected(0) = True Else
cmdStart.Enabled = False lstDevices.AddItem ("No
Device Available") End If cmdStop.Enabled = False
cmdSave.Enabled = False End Sub
Private Sub
LoadDeviceList() Dim strName As String Dim strVer As
String Dim iReturn As Boolean Dim x As Long x = 0
strName = Space(100) strVer = Space(100) Do
iReturn = capGetDriverDescriptionA(x, strName, 100,
strVer, 100) If iReturn Then lstDevices.AddItem
Trim$(strName) x = x + 1 Loop Until iReturn = False
End Sub
Private Sub OpenPreviewWindow() hHwnd
= capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0,
0, 640, 480, picCapture.hwnd, 0) If SendMessage(hHwnd,
WM_CAP_DRIVER_CONNECT, iDevice, 0) Then SendMessage hHwnd,
WM_CAP_SET_SCALE, True, 0 SendMessage hHwnd,
WM_CAP_SET_PREVIEWRATE, 66, 0 SendMessage hHwnd,
WM_CAP_SET_PREVIEW, True, 0 cmdSave.Enabled = True
cmdStop.Enabled = True cmdStart.Enabled = False
Else DestroyWindow hHwnd cmdSave.Enabled = False
End If End Sub
Private Sub
ClosePreviewWindow() SendMessage hHwnd,
WM_CAP_DRIVER_DISCONNECT, iDevice, 0 DestroyWindow hHwnd
End Sub Private Sub Form_Unload(Cancel As Integer)
If cmdStop.Enabled Then ClosePreviewWindow End If
End Sub | |
| กลับไปข้างบน |
|
 |
บุคคลทั่วไป
|
ตอบ: พฤ. สค. 25, 2005
1:19 pm ชื่อกระทู้:
|
 |
|
Code of the day: Scott's
LED ocx
Property: LEDState และ LEDFlashrate
LEDState: - 0 = Off LED - 1 = On LED - 2 =
Flashing LED LEDFlashrate: Property
ที่ใช้กำหนดค่าในการกระพริบของ LED
Public n As Integer
Private Sub Form_Load() Timer1.Interval = 1
Timer1.Enabled = False Timer2.Interval = 1000
Timer2.Enabled = False Command1.Caption = "Start"
Command2.Caption = "Clear LED" End Sub Private Sub
Command1_Click() Static i As Integer i = i + 1 i =
i Mod 2 If i <> 0 Then Command1.Caption = "STOP"
Timer1.Enabled = True Timer2.Enabled = True n = 0
Else Command1.Caption = "RUN" Timer1.Enabled =
False Timer2.Enabled = False For m = 0 To 7
ForgeLEDb1(m).LEDstate = 0 Next m n = 0 End If
End Sub Private Sub Timer1_Timer() If n < 8
Then ForgeLEDb1(n).LEDstate = 1 Else For m = 0 To
7 ForgeLEDb1(m).LEDstate = 0 Next m End If End
Sub Private Sub Timer2_Timer() n = n + 1 If n >
8 Then n = 0 End Sub
ดาวน์โหลด ocx:http://members.tripod.com/forgesoft/
ประยุกต์: แสดงผล[/url] | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: ศ. สค. 26, 2005 9:04
am ชื่อกระทู้:
|
 |
|
Code of the day: Check IP
ได้ง่าย ๆ ด้วย winsock
Private Sub cmdIp_Click()
Text1.Text = Winsock1.LocalIP Text2.Text =
Winsock1.LocalHostName End Sub
ประยุกต์:
- | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: อาทิตย์ สค. 28, 2005
10:55 am ชื่อกระทู้:
|
 |
|
Code of the day: MS agent
'Module Public Bot As IAgentCtlCharacterEx
'Form
Private Sub Form_Load()
Agent1.Characters.Load "Robby", "robby.acs" Set Bot =
Agent1.Characters("Robby") Bot.Show End Sub
Private Sub Command1_Click() Bot.Speak Text1.Text
End Sub Private Sub Command2_Click() End End
Sub | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: อ. สค. 30, 2005
11:02 am ชื่อกระทู้:
|
 |
|
Code of the day:
เคลียร์ค่าใน text box
Private Sub Command1_Click()
For i = 0 To 99 Text1(i).Text = "" Next i End
Sub | |
| กลับไปข้างบน |
|
 |
En_tee บุคคลทั่วไป
|
ตอบ: พฤ. กย. 01, 2005
10:27 pm ชื่อกระทู้:
ให้โปรแกรมทำงานเหมือนโปรแกรม scan ไวรัส |
 |
|
พี่ครับผมส่ง mail
ไปหาพี่แล้วแต่คิดว่าพีคงยังไม่ได้อ่าน
ผมขอบคุณพี่มากนะครับที่ตอบคำถาม เกี่ยวกับ code
คีย์บอร์ดที่หน้าเวบบอร์ดให้ผมแต่เนื่องจากผมศึกษา vb
ได้ไม่ถึงเดือนผมก็เลยเข้าใจแค่บางส่วน
แต่ก็ช่วยผมได้เยอะเลยขอบคุณมากครับ
พีครับแต่ผมมีเรื่องรบกวนอีกหน่อยครับ
ผมจะทำยังไงให้โปรแกรมมันทำงานคล้ายโปรแกรม scan ไวรัส
ประมาณว่าเช่นผมทำงานอยู่ที่หน้า ms word ถ้าผมพิมพ์ ตัว a ลงใน
ms word หน้าจอก็จะขึ้นแสดง a
ปกติแต่โปรแกรมของผมจะส่งเสียงเพลงออกมาด้วย
วัตถุประสงค์ของโปรแกรมคือ
มันสามารถทำงานได้โดยที่เราทำงานอื่นอยู่เช่น ms word,ms
excells,internet,หรือหน้าจอปกติโดยที่ยังไม่เข้าโปรแกรมอะไรเลยหากมีการกด
a ก็จะมีเสียงเพลงเล่นขึ้นมาคล้ายโปรแกรม scan ไวรัส
คอยดักจับอยู่ตลอดเวลา
เห็นมีคนที่เค้าพอรู้เขาบอกว่าต้องติดต่อกับ API
มันเเป็ยยังไงผมก็ไม่ค่อยรู้จักรู้จัก
ผมเองก็เป็นมือใหม่ก็เลยไม่ค่อยเข้าใจ
ก็เลยต้องขอให้พี่ช่วยหน่อยครับ
ไกด์นำทางให้ผมหน่อยนะพี่ขอบคุณมากครับ | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: ศ. กย. 02, 2005 4:59
pm ชื่อกระทู้:
|
 |
|
ใช้ API "GetKeyState"
นะครับ
1. สร้างปุ่มกดมา 1 อันตั้งชื่อให้มันว่า A
2. Timer 1 อันตั้ง interval=20
ผมทดลองโดยพิมพ์ A
ที่ MS word(หรือโปรแกรมอะไรก็ได้) ทุกครั้งที่พิมพ์ caption
ของปุ่มก็จะเปลี่ยนเป็นสีเหลือง(อย่าลืม set styleเป็น graphical
ล่ะ) ถ้าจะประยุกต์ให้แสดงผลเป็นอย่างอื่นก็ใด้
'Module Option Explicit Declare Function
GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As
Integer Private Keystate As Long Private A As Boolean
Public Const VK_A = &H41 Public Function
CheckKeys() Keystate = GetKeyState(VK_A) If (Keystate
And &H80) = &H80 Then Form1.A.BackColor = vbYellow
Else Form1.A.BackColor = &H8000000A End If
End Function
'Form Option Explicit Private
Sub Timer1_Timer() CheckKeys End Sub | |
| กลับไปข้างบน |
|
 |
เด็กตาดำๆ บุคคลทั่วไป
|
ตอบ: ส. กย. 03, 2005 6:45
pm ชื่อกระทู้:
|
 |
|
พี่ครับ ช่วยสอนวิธีการ
เขียน vb ให้ ส่ง sms เข้ามือถือหน่อยสิครับ
ผมรู้แค่ว่าต้องใช้ AT Command
ถ้าใช้โทรศัพท์บ้านส่งจะทำมีการเชื่อมต่อยังไง
และถ้าจะใช้มือถือส่ง นี่จะง่ายกว่าโทรศัพท์บ้าน ไหมครับ วิธีทำ
ทำยังไง ขอแบบละเอียดๆ อ่าครับ ขอบคุณมากครับ | |
| กลับไปข้างบน |
|
 |
เด็กตาดำๆ บุคคลทั่วไป
|
ตอบ: อาทิตย์ กย. 04, 2005
8:04 am ชื่อกระทู้:
|
 |
|
| AT Command
ซึ่งติดต่อพอร์ตของโทรศัพท์ อาจจะเป็น พอร์ตCom1 หรือ Com2 ก็ได้
แต่ถ้าหากในกรณีที่เป็นเน็ต adsl
ซึ่งสายโทรศัพท์ต้องเชื่อมต่อกับ Router นี่
มันจะกลายเป็นพอร์ตอะไรครับ หรือว่าไม่สามารถส่ง sms
ได้เลย | |
| กลับไปข้างบน |
|
 |
บุคคลทั่วไป
|
ตอบ: อาทิตย์ กย. 04, 2005
12:02 pm ชื่อกระทู้:
|
 |
|
ไม่เคยลองทำนะครับ
แต่เท่าที่หาข้อมูลมาก็จะมีการส่งอยู่ 2
แบบ(ถ้าไม่ถูกต้องก็ขออภัยคร้าบบ) 1. SMS PDU format และ VB
Mscom(บทความเกี่ยวกับ PDUhttp://www.dreamfabric.com/sms/)
ถ้ามีเวลาจะลองทำดู
2. ผ่าน ICQ
(ผ่านเวปไซต์)ผมลองดาวน์โหลด ICQ มาส่งดูแต่มันส่งไม่ได้ มี
error "The cellular network is currently unable to send your
message to the rececipient. Please try again later".
ไม่รู้ว่ามันไปติดอะไร แต่ที่รู้แน่ ๆ คือ ICQ ที่เป็นโปรแกรมส่ง
SMS ทั่วโลกยังส่งไม่ได้
นับประสาอะไรกับโปรแกรมที่เราทำเองละครับ
แต่ก็ลองเอาไปทำดูละกันครับ โปรแกรม 1. สร้าง
text ชื่อ user.Text, pass.Text เพื่อรับค่าหมายเลข ICQ และ
password 2. สร้าง text ชื่อ prefix.Text, number.Text
เพื่อรับค่ารหัสประเทศ+หมายเลขเครือข่าย เช่นไทยคือ 66
และหมายเลขปลายทาง เช่นป้อน 6601-5555555 3. Code
Private Sub Command1_Click() 'เปิดรับค่า log in log in
Inet1.OpenURL
"http://web.icq.com/karma/dologin/1,,,00.html?uService=1&uLogin="
+ user.Text + "&uPassword=" + pass.Text 'ส่ง message
ผ่านทางเบอร์ปลายทาง เช่น66(01)5555555 Inet1.OpenURL
"http://web.icq.com/sms/send_history/1,,,00.html?target=msghistory&prefix=+"
+ prefix.Text + "&carrier=aaa&tophone=" + number.Text
+ "&msg=" + msg.Text End Sub | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: อาทิตย์ กย. 04, 2005
12:31 pm ชื่อกระทู้:
|
 |
|
error
ที่เกิดเมื่อส่งโดยโปรแกรม icq
โปรแกรมที่ทำ (ส่งออก smsได้
ตอนนี้ก็รออยู่ยังไม่มาซักที)
 | |
| กลับไปข้างบน |
|
 |
เด็กตาดำๆ บุคคลทั่วไป
|
ตอบ: อาทิตย์ กย. 04, 2005
6:25 pm ชื่อกระทู้:
|
 |
|
พี่ๆ พอจะมี ตัวอย่าง
โปรแกรม vb ในการเขียน เล็กๆ น้อยๆ พอให้เป็นแนวทางได้ไหมครับ
จะใช้ vb Mscom อ่ะครับ เอาที่แบบใช้ได้จริงๆ อ่ะครับ
ใช้หลักการของ AT Command เช่นโปรแกรมรับสายวางสายอีัตโนมัติ
เงี่ยครับ แต่ใช้ AT Command ในการส่ง sms แทน และถ้าจะใช้
Mscom เนี่ย เน็ต adsl ทำไม่ได้ใช่ไหมครับ เพราะว่า
พอร์ตที่เชื่อมต่อมันไปต่อกับ Router เลย และไม่มีโมเด็ม
หรือมีวิธีทำครับ รบกวนทีครับ ขอบคุณมากครับ
ปล.นี่เป็นโปรแกรมตอบรับอัตโนมัติ vb AT Command http://saltnlight-e.com/project1.zip
แหล่งที่มา http://saltnlight-e.com/programing.htm | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: จ. กย. 05, 2005
11:37 am ชื่อกระทู้:
|
 |
|
ยังไม่ได้อ่านละเอียดนะนู๋
แต่ดูผ่านๆ ตา มันคือการควบคุมการทำงานของมือถือตาม AT command
ไม่ใช่การเขียนโปรแกรมส่ง sms เหมือนที่พี่เข้าใจ จาก link ที่
2ของน้อง ให้ดูหัวข้อ 7 กับ 8 น่าจะช่วยได้เยอะ
ลองใช้
keyword หาดูใน google พี่ลองดูแล้ว free source code
มีเยอะมั๊กๆ copy มาใช้ได้เรยย
MSComm1.Output = "AT+CMGS" MSComm1.Output =
"AT+CMGL" MSComm1.Output = "AT+CMGR" MSComm1.Output =
"AT+CMGS" MSComm1.Output = "AT+CMSS" MSComm1.Output =
"AT+CMGW" MSComm1.Output = "AT+CMGD"
SMS AT
command
AT+CMGL List Messagese AT+CMGR Read
Message AT+CMGS Send Message AT+CMSS Send Message from
Storage AT+CMGW Write Message to Memory AT+CMGD Delete
Message
จบ forum นี้ครับ(ห้ามกลับมาถามอีก)  | |
| กลับไปข้างบน |
|
 |
thaiio
เข้าร่วมเมื่อ: 07 มีค. 2004 ตอบ:
17
|
ตอบ: พ. กย. 07, 2005 1:24
pm ชื่อกระทู้:
|
 |
|
| สนับสนุนกระทู้นี้ครับ
ผมเลยตรึงกระทู้ไว้ให้ค้างอยู่ด้านบนเลยนะครับ | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: พฤ. กย. 08, 2005
10:05 am ชื่อกระทู้:
|
 |
|
ขอบคุณครับ webmaster
=============== Code of the day: โปรแกรมติดต่อ webcam
โดยใช้ VB
ผมทึกทักเอามีหลายคนสงสัยว่า How can I detect
webcam and command its?(โดยใช้ VB) ปกติแล้วหลาย ๆ คน
คงคิดว่ามันต้องมี component
อะไรซักอย่างเพื่อเป็นตัวเชื่อมต่อระหว่างโปรแกรมกับ
Hardware(webcam) แน่ละหลาย ๆ
คนเขียนโปรแกรมเป็นและมีกล้องแต่ไม่รู้จะไปหา component
ตัวนั้นที่ไหนก็เลยติดแหง๊กตามหาคำตอบในเวปบอร์ดต่าง ๆ
........นี่ปัญหาของคุณใช่ไหม ผมบอกได้ว่าคุณ ๆ
คิดมากไปเพราะไมโครซอฟท์ได้คิดปัญหานี้ไว้ก่อนแล้วและก็แก้ให้แล้ว(จริง
ๆ ใช้ประโยชน์ด้านอื่นๆมั้ง) และเขียนไว้ในหมวด Windows
Multimedia หมู่ Multimedia Messages http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_wm_cap_set_scale.asp
ที่เรานำเอามาใช้ก็คือ 1. messagge ค้นหา driver
2. การจัดการเกี่ยวกับภาพ(preview,scale,WS..)
สรุปคือมันจะหา driver+device
บนเครื่องคอมพิวเตอร์เราเอง
เมื่อเจอแล้วก็เป็นหน้าที่ของเราที่จะเขียนโปรแกรมดึงภาพมาเก็บและแสดงผล
ทีนี่ก็มาเริ่มเขียนโปรแกรมกันเลย......รับรองได้ผล
100000000 % ผมลองมาแล้วและย้ำว่าไม่มีการเพิ่ม component ไดๆ
ทั้งสิ้น(เผื่อมีคนจะถามอีก)
'ดูเหมือน code จะยาวเพราะ font มันสีเหมือนกัน
แต่ถ้าคุณเอาไปวางบน VB
จะเห็นชัดว่ามันสั้นนิดเดียวเอง......แปลกแต่จริงนะเออ????
Const WM_CAP As Integer = &H400 Const
WM_CAP_DRIVER_CONNECT As Long = WM_CAP + 10 'ติดต่อ
webcam(โดยหาจาก driver) Const WM_CAP_DRIVER_DISCONNECT As
Long = WM_CAP + 11 'Disconect webcam อันนี้สำคัญทีเดียว
Const WM_CAP_EDIT_COPY As Long = WM_CAP + 30 'Copy ภาพจาก
frame buffer นำมาเก็บในรูปของ clipboard เอาไว้ใช้สำหรับ save
ภาพนิ่ง(jpg,bmp..)
Const WM_CAP_SET_PREVIEW As Long =
WM_CAP + 50 'นำภาพจาก hardware มาเก็บที่ system memory
แล้วนำมาแสดงบน window ผ่าน GDI function Const
WM_CAP_SET_PREVIEWRATE As Long = WM_CAP + 52 'Set frame
Const WM_CAP_SET_SCALE As Long = WM_CAP + 53 'ให้
able(True) หรือ disable scale(False) ภาพ Const WS_CHILD As
Long = &H40000000 'Window style จ้า Const WS_VISIBLE
As Long = &H10000000 'Window style จ้า Const
SWP_NOMOVE As Long = &H2 Const SWP_NOSIZE As Integer =
1 Const SWP_NOZORDER As Integer = &H4 Const
HWND_BOTTOM As Integer = 1
Dim iDevice As Long '
Device ID ที่รับได้ Dim hHwnd As Long ' Handle to preview
window
Private Declare Function SendMessage Lib
"user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg
As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal
hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long,
ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal
wFlags As Long) As Long Private Declare Function
DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
Private Declare Function capCreateCaptureWindowA Lib
"avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle
As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As
Long, ByVal nHeight As Integer, ByVal hWndParent As Long,
ByVal nID As Long) As Long Private Declare Function
capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As
Long, ByVal lpszName As String, ByVal cbName As Long, ByVal
lpszVer As String, ByVal cbVer As Long) As Boolean
Private Sub Form_Load() LoadDeviceList
'ก่อนอื่นต้องหาว่ามีกล้อง(webcam)ติดตั้งอยู่หรือไม่
If
lstDevices.ListCount > 0 Then lstDevices.Selected(0) =
True 'ถ้ามีก็ OKey เตรียมตัวคลิก start ได้เรยยย มัน enable
แล้ว Else cmdStart.Enabled = False 'ถ้าไม่มีก็จบ(ห่)
lstDevices.AddItem ("No Device Available") End If
cmdStop.Enabled = False cmdSave.Enabled = False
End Sub
Private Sub LoadDeviceList()
'ส่วนนี้ใช้หาว่ามีการติดตั้ง webcam อยู่หรือไม่ Dim
strName As String Dim strVer As String Dim iReturn As
Boolean Dim x As Long x = 0 strName = Space(100)
strVer = Space(100) Do iReturn =
capGetDriverDescriptionA(x, strName, 100, strVer, 100) ' โหลด
Driver และ version If iReturn Then lstDevices.AddItem
Trim$(strName) ' โหลดชื่อ Device ที่ detect ได้ลงใน lstDevices
x = x + 1 Loop Until iReturn = False End Sub
Private Sub cmdStart_Click() iDevice =
lstDevices.ListIndex 'โหลด Device(Driver)จาก list.....
OpenPreviewWindow 'ไปดูการทำงานที่โปรแกรมย่อย
OpenPreviewWindow End Sub
Private Sub
OpenPreviewWindow() 'เมื่อทุกอย่างพร้อมแล้วก็ลุยเรยยยยย
hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or
WS_CHILD, 0, 0, 640, 480, picCapture.hwnd, 0)
'ให้รับภาพผ่านทาง picture box
If SendMessage(hHwnd,
WM_CAP_DRIVER_CONNECT, iDevice, 0) Then 'ติดต่อ webcam
SendMessage hHwnd, WM_CAP_SET_SCALE, True, 0 'ตั้งค่า
scale ให้เป็น False เพราะขนาดภาพจริงจะถูก fix ไว้ ถ้าเป็น True
ขนาดภาพจะขยายเท่ากับ window preview
SendMessage hHwnd,
WM_CAP_SET_PREVIEWRATE, 66, 0 'ตั้งค่า preview rate
SendMessage hHwnd, WM_CAP_SET_PREVIEW, True, 0
'ให้เริ่มรับภาพ(True) จาก webcam
cmdSave.Enabled =
True cmdStop.Enabled = True cmdStart.Enabled = False
Else
DestroyWindow hHwnd
'ถ้ามีข้อผิดพลาดก็ให้ออกจาก window(แบบถูกที่ถูกทาง)
cmdSave.Enabled = False End If End Sub
Private Sub ClosePreviewWindow()
SendMessage
hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0
'ยกเลิกการติดต่อโดยใช้ message WM_CAP_DRIVER_DISCONNECT
ถ้าไม่ออกวิธีนี้ error แน่นอน ลองดูสิ
DestroyWindow
hHwnd 'ออกจาก window End Sub
Private Sub
cmdStop_Click() ClosePreviewWindow cmdStop.Enabled =
False cmdSave.Enabled = False cmdStart.Enabled = True
End Sub
หวังว่าจะเอาไปใช้ประโยชน์นทางที่ถูกที่ควรนะครับ  | |
| กลับไปข้างบน |
|
 |
En_tee บุคคลทั่วไป
|
ตอบ: พฤ. กย. 08, 2005
11:49 pm ชื่อกระทู้:
ผมไม่ได้หายจ้อยนะพี่ |
 |
|
| ช่วงที่หายไปผมทำโรบอทหุ่นยนต์อยู่ผมเลยไม่ได้เข้ามาเช็คอะไรเลย
code
ที่พี่ให้มาก็ลองแค่คืนนั้นเองครับมันมีงานหุ่นเข้ามาครับต้องขอโทษพี่ด้วยที่หายไปไม่ได้ตอบความคืบหน้าให้กับพี่
มันยุ่งจริงๆครับขอโทษทีจริงๆ
ข้อมูลใหม่ที่พี่ให้ผมเยี่ยมเลยครับต้องขอบคุณมี่พี่ให้ผมอีกแล้ว
ขอบคุณมากๆครับ | |
| กลับไปข้างบน |
|
 |
เด็กดื้อ บุคคลทั่วไป
|
ตอบ: จ. กย. 12, 2005 6:53
pm ชื่อกระทู้:
ภาพที่ได้จัดถูกจัดเก็บไว้ที่ใหน |
 |
|
| บอดพี่นี่แหล่งความรู้ของผมเลย
ผมกำลังทำเรื่องกล้องพอดี
แต่อยากทราบว่าภาพจะถูกจัดเก็บไว้ที่ใหนรึครับ | |
| กลับไปข้างบน |
|
 |
บุคคลทั่วไป
|
ตอบ: อ. กย. 13, 2005 9:52
am ชื่อกระทู้:
|
 |
|
ขอบคุณมากครับ พี่แมงเม่า
ไม่ทราบว่าพี่มี เมล์ ป่าวครับ ขอหน่อยได้ไหมครับ
ตอนนี้กำลังทำโปรเจคอยู่ครับ รบกวนด้วยนะครับ | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
ตอบ: อ. กย. 13, 2005
11:10 am ชื่อกระทู้:
|
 |
|
ตอนนี้ผมทำโปรแกรมกับ webcam
ชื่อว่า motion detection การทำงานแบบนี้ครับ 1. ใช้ timmer
จับภาพทุก 1/20 วินาที่(5 frames/sec) 2.
นำภาพที่ได้มาหาจุดสี RGB 3. เอาจุดสีที่อ่านได้มาลบกัน
แล้วดูว่าอยู่ในช่วงที่กำหนดไว้หรือไม่ เช่น R0=10, R1=20
ดังนั้นผลต่าก็เท่ากับ 10 ถ้าเรากำหนดว่าให้ capture
ภาพที่มีจุดสีต่างกัน 5 จุดมันก็จะ capture ภาพนั้นไว้ 4.
ทำไปเพื่ออะไร 4.1 สมมุติว่าเราเปิด webcam
ทิ้งไว้กล้องจะมีการตรวจสอบทุก ๆ 1/20
วินาทีว่าภาพโหลดมามีการเปลี่ยนแปลงของจุดสี(pixel)หรือไม่ภายใต้เงื่อนไข
5 pixcelหรือไม่ สมมุติว่าขณะนั้นมีหนูวิ่งผ่านกล้องเป็นเวลา
5 วินาที กล้องจะนำภาพมาโหลดไว้ที่ picture box
พร้อมทั้งเอาแต่จุดสีของแต่ละภาพมาลบกันตามลำดับจนครับ 25
ภาพ(5sec*5ภาพ/sec) 4.2 ถ้าภาพที่ 1-4
แทบจะไม่ต่างกันเลย(ต่างกันน้อยกว่า 5 pixel) มันก็จะไม่ capture
ภาพที่ 4 ไว้แต่มันจะต่างกันในภาพที่ 5 ดังนั้น
ถ้าหนูวิ่งผ่านกล้องเป็นเวลา5วินาทีโดยไม่เปลี่ยนท่างทาง
มันจะถูกถ่ายภาพเก็บไว้ 25/5 = 5
ภาพภายใต้เงื่อนไขการเปลี่ยนแปลง 5 pixel
โปรแกรมตัวนี้ผมทำไปประกวดที่ http://www.thaiware.com/
ลองดาวน์โหลดไปเล่นดูนะครับ ส่วน code นั้นง่าย ๆ มาก
ๆครับต่อยอดจาก source ที่ผมเคย post ทิ้งไว้
http://www.geocities.com/ezy_math/Package.zip
โปรแกรมตัวนี้ผมให้มันจับภาพเมื่อมีเปอร์เซนต์การเคลื่อนไหว(PCDR:
pixel comparison, differrnt ratio;ตั้งชื่อเอง อิอิ)มากว่า 3 %
และเก็บภาพไว้ในโฟลเดอร์ img | |
| กลับไปข้างบน |
|
 |
แมงเม่า บุคคลทั่วไป
|
|
| กลับไปข้างบน |
|
 |
บุคคลทั่วไป
|
ตอบ: อ. กย. 13, 2005
12:03 pm ชื่อกระทู้:
|
 |
|
ลองไปทำดูแล้วครับ
เยี่ยมเลยครับ
ผมใช้กล้องเวปแคม ของ ลอจิเทค ครับ
ภาพออกมาทำไมไม่ชัดเหมือนตอนใช้โปรแกรมที่แถมมาล่ะครับ
อ้อ... แล้วทำไมภาพมันกลับซ้ายเป็นขวาล่ะครับ อิอิอิ
แถมดูเหมืือนภาพมันซูมๆๆ ด้วย :p
เราจะกำหนดขนาดของภาพได้รึป่าวครับ แล้วเวลากดเซฟ
ภาพมันจะไปอยู่ที่ไหนเหรอครับ ???
ถามอีกนิดนึงครับ !!!
คือถ้าผมเอากล้องเวปแคมไปต่อบนฐานของมอเตอร์ (สเตปมอเตอร์)
แล้วผมจะเพิ่มฟังก์ชั่น การหมุนของกล้องเข้ามา
สามารถทำได้ใช่ไหมครับ !!! กะว่าจะสั่งงานผ่านพอร์ตปรินเตอร์
แต่ปัญหาคือสาย usb ของกล้องมันสั้นนิดเดียวเองครับ
เราจะต่อสายให้ยาวได้ไหมครับ แล้วยาวได้สูงสุดเท่าไหร่ครับ
ยังไงรบกวนพี่แมงเม่า และพี่ๆทุกคนด้วยนะครับ :p
----------------------------------------------------------------------------------------
>>> http://www.geocities.com/ezy_math/Package.zip
<<< โหลดไม่ได้อ่ะครับพี่ -__-" | |
| กลับไปข้างบน |
| |