vb中如何调用另一个软件呢?

yuseqing 2010-03-15 10:13:34
我有一个摄像头不能用vfw捕捉,需要打开这个摄像头佩戴的一个软件才能打开这个摄像头,现在想能不能在vb中通过命令打开这个随即佩戴的软件呢?然后就可以打开这个摄像头了
...全文
409 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggblair 2010-03-22
  • 打赏
  • 举报
回复
学习!!!
码之魂 2010-03-21
  • 打赏
  • 举报
回复
如果非要 先 vfw 的话,就先调用下 vfw 然后继续....
码之魂 2010-03-21
  • 打赏
  • 举报
回复

1 你要有视频捕捉设备
2 正确安装在你的电脑上。
3 新建一个VB项目,添加一个Module

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
 Alias "capCreateCaptureWindowA" ( _
 ByVal lpszWindowName As String, _
 ByVal dwStyle As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal hWndParent As Long, _
 ByVal nID As Long) As Long

Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WM_USER = &H400
Private Const WM_CAP_START = &H400
Private Const WM_CAP_EDIT_COPY = (WM_CAP_START + 30)
Private Const WM_CAP_DRIVER_CONNECT = (WM_CAP_START + 10)
Private Const WM_CAP_SET_PREVIEWRATE = (WM_CAP_START + 52)
Private Const WM_CAP_SET_OVERLAY = (WM_CAP_START + 51)
Private Const WM_CAP_SET_PREVIEW = (WM_CAP_START + 50)
Private Const WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START + 11)

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 Preview_Handle As Long


Public Function CreateCaptureWindow( _
 hWndParent As Long, _
 Optional x As Long = 0, _
 Optional y As Long = 0, _
 Optional nWidth As Long = 320, _
 Optional nHeight As Long = 240, _
 Optional nCameraID As Long = 0) As Long

 Preview_Handle = capCreateCaptureWindow("Video", _
  WS_CHILD + WS_VISIBLE, x, y, _
  nWidth, nHeight, hWndParent, 1)

 SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, nCameraID, 0
 SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 30, 0
 SendMessage Preview_Handle, WM_CAP_SET_OVERLAY, 1, 0
 SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0

 CreateCaptureWindow = Preview_Handle
End Function


Public Function CapturePicture(nCaptureHandle As Long) As StdPicture
 Clipboard.Clear
 SendMessage nCaptureHandle, WM_CAP_EDIT_COPY, 0, 0
 Set CapturePicture = Clipboard.GetData
End Function


Public Sub Disconnect(nCaptureHandle As Long, _
 Optional nCameraID = 0)

 SendMessage nCaptureHandle, WM_CAP_DRIVER_DISCONNECT, _
  nCameraID, 0
End Sub

4 在form上添加一个PictureBox,一个按钮,Caption设为 Save Pic
Dim Video_Handle As Long

Private Sub Form_Load()
  Video_Handle = CreateCaptureWindow(PicCapture.hwnd)
End Sub

Private Sub Command1_Click()
  Dim x As StdPicture
  Set x = CapturePicture(Video_Handle)
  SavePicture x, "c:\a.bmp"
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Disconnect Video_Handle
End Sub

现在还是人类 2010-03-19
  • 打赏
  • 举报
回复
如果不能用VFW,通常只有两种方法:
1、DirectShow(直接用VB做不了,除非先用VB做接口)
2、直接与驱动通讯
风~雪夜归人 2010-03-19
  • 打赏
  • 举报
回复
我来学习。
yuseqing 2010-03-17
  • 打赏
  • 举报
回复
谢谢朋友们! 如果想直接在vb中自己写软件捕捉这个摄像头就比较复杂了吗? 不知道有没有比较好的方法呢?
moke520 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chinaboyzyq 的回复:]
路过~~~~~~~~~~~~~~~~~~~~~
[/Quote]

嘿嘿 向猴哥学习
lys510116494 2010-03-17
  • 打赏
  • 举报
回复
shell
chinaboyzyq 2010-03-17
  • 打赏
  • 举报
回复
路过~~~~~~~~~~~~~~~~~~~~~
现在还是人类 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leftie 的回复:]
shell c:\aa.exe
[/Quote]
对,不过要改一下:
shell "c:\aa.exe"
zhzhs007 2010-03-15
  • 打赏
  • 举报
回复
路过了,人家已经回答了
gooore 2010-03-15
  • 打赏
  • 举报
回复
路过

帮顶
饮水需思源 2010-03-15
  • 打赏
  • 举报
回复
shell c:\aa.exe
贝隆 2010-03-15
  • 打赏
  • 举报
回复
使用Shell命令可以实现,这是Shell的具体用法:

Shell 函数


执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。

语法

Shell(pathname[,windowstyle])

Shell 函数的语法含有下面这些命名参数:

部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。


windowstyle 命名参数有以下这些值:

常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。


说明

如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。

注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
guojl 2010-03-15
  • 打赏
  • 举报
回复
comstr = "\COM.exe"
Shell App.Path + comstr, vbNormalFocus
guyehanxinlei 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supermanking 的回复:]
引用 1 楼 leftie 的回复:
shell c:\aa.exe

对,不过要改一下:
shell "c:\aa.exe"
[/Quote]
UP

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧