找回密码
 注册
搜索
查看: 2585|回复: 22

[讨论] 如何编程实现Windows自动停止U盘?

[复制链接]
发表于 2006-2-27 15:38:00 | 显示全部楼层 |阅读模式
一款手机,连到微机上可以作为U盘使用。因为出货时需要拷贝不同的音乐、视频文件,所以只有在出货前才能拷贝。
但有一个不方便的地方,连到微机后会作为U盘进行拷贝,但拷贝完成后每次都需要手动从Windows中使用“拔下或弹出硬件”、停止相应的U盘,之后才能拔下手机。
这种手动方法费时费力,所以想在编程中直接实现停止U盘的功能,但不知道该怎么做。哪位大侠能帮忙解决一下?多谢。
注:Win2000系统,使用VB实现的话更好一些(本人编程水平不高,VB还用得稍好一点)
 楼主| 发表于 2006-2-28 16:32:00 | 显示全部楼层
哪位兄弟姐妹能帮一下忙?先谢了
点评回复

使用道具 举报

发表于 2006-3-1 00:59:00 | 显示全部楼层
可以使用批处理试试,调用这个驱动程序的卸载命令。只需要双击就可以,相对来说简单多了。如果您有专门的拷贝软件(自己写的)可以加载进去。[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-3-1 08:04:00 | 显示全部楼层
用卸载命令不好,下次插入U盘时又得重新安装,生产的话肯定不允许这样的,试试用工具找出窗口的句柄,然后模拟键盘给相应的按钮发消息。[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-3-1 08:10:00 | 显示全部楼层
<P>摘自csdn</P>
<P>用控件SysInfo,可以实现。</P>
<P>Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
MsgBox "usb插入"
End Sub</P>
<P>Private Sub SysInfo1_DeviceRemoveComplete(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
MsgBox "usb拔出"
End Sub</P>
<P>但我发现有时这种响应不灵,也就是当一种USB不能识别时就不能响应了。所以我想实现USB口插入设备即响应(弹出窗体通知有USB设备插入),拔出即弹出窗口通知有USB设备拔出。不管该设备是否能用。</P>

<P align=right><FONT color=red>+3 RD币</FONT></P>

<P align=right><FONT color=red>+3 RD币</FONT></P>

<P>后面的帖子加不上rd,给你加在这里吧</P>
[此贴子已经被cuijw于2006-3-7 8:37:27编辑过]
点评回复

使用道具 举报

 楼主| 发表于 2006-3-1 11:46:00 | 显示全部楼层
<P>多谢yxm_ah兄的帮助</P><P>我再试一下4楼的方法</P><P>5楼的方法能停止U盘吗?好像只能提示插入、拔出U盘,我还没找到停止U盘的具体使用方法,能否再提示一下?先谢了</P>
点评回复

使用道具 举报

发表于 2006-3-1 20:33:00 | 显示全部楼层
<P>我明天上传一段代码到自动化测试开发网(<a href="http://www.autotest.com.cn" target="_blank" >www.autotest.com.cn</A>)软件开发交流版,代码演示如何监视U盘插入,获得U盘的盘符,自动拷入文件,校验文件,弹出U盘……</P><P>请访问</P>[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-3-1 21:45:00 | 显示全部楼层
4楼的兄弟应该是没有认真看楼主的帖子,楼主所使用的是2K 的系统。USB驱动是系统自带的(即插即用),插入USB后设备后系统会自动识别。你可以用U盘试试就知道了[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-3-1 22:21:00 | 显示全部楼层
<P>期待着7楼的哥们的代码</P>
点评回复

使用道具 举报

 楼主| 发表于 2006-3-2 08:41:00 | 显示全部楼层
<P>期待着7楼的哥们的代码</P>
点评回复

使用道具 举报

发表于 2006-3-6 13:24:00 | 显示全部楼层
<DIV class=O v:shape="_x0000_s1026"><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;WinExec("rundll32.exe shell32.dll,Control_RunDLL hotplug.dll",0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        hhot=FindWindow("#32770",0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        if(!hhot) </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        { </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;            return FALSE; </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        } </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        htree=FindWindowEx(hhot,0,"SysTreeView32",0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        if(!htree) </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        { </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;            ShowMessage("htree error"); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;            return FALSE; </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        } </DIV><DIV '80 50 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">// 模拟键盘移除USB <DIV class=O v:shape="_x0000_s1026"><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;for(i=0;i&lt;count&amp;&amp;name;i++) </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        { </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;            keybd_event(toupper(name),0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;            keybd_event(toupper(name),0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        } </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_TAB,0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_TAB,0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        Sleep(200); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        SendMessage(hhot,WM_CLOSE,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        Sleep(1000); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,0,0); </DIV><DIV '80 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1">&#9658;        keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); </DIV><DIV '80 50 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1"></DIV></DIV></DIV></DIV>
点评回复

使用道具 举报

 楼主| 发表于 2006-3-6 17:06:00 | 显示全部楼层
学习一下,谢了
点评回复

使用道具 举报

发表于 2006-3-6 18:03:00 | 显示全部楼层
可是这个好像不是VB代码
点评回复

使用道具 举报

 楼主| 发表于 2006-3-7 08:36:00 | 显示全部楼层
<P>怎么加不上rd?</P>
<P>只好加在前面的帖子了</P>
点评回复

使用道具 举报

发表于 2006-3-25 11:41:00 | 显示全部楼层

你看看能不

【文件名】:06325@52RD_LCT_MP3 Download_MTK.rar
【格 式】:rar
【大 小】:108K
【简 介】:
【目 录】:


[br]<p align=right><font color=red>+3 RD币</font></p>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
点评回复

使用道具 举报

 楼主| 发表于 2006-3-25 12:09:00 | 显示全部楼层
谢谢,看一下
点评回复

使用道具 举报

发表于 2006-3-26 11:53:00 | 显示全部楼层
<P>楼上发的是龙旗的MP3下载工具!</P>
<P>  是可以的!但是用多会经常出现注册表空间不足!!!</P>
<P>反正我这是这样子的!几乎每台用过这个软件的PC都有出现注册表空间不足</P>[upload=jpg]UploadFile/2006-3/06326@52RD_未命名.JPG[/upload][br]<p align=right><font color=red>+1 RD币</font></p>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
点评回复

使用道具 举报

发表于 2006-3-29 10:06:00 | 显示全部楼层
#include &lt;tchar.h&gt;
#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;devguid.h&gt;

#define DWORD_PTR DWORD
#define ULONG_PTR DWORD


extern "C" {
#include "hidsdi.h"
}
// 需加入hid.lib

#include &lt;setupapi.h&gt;
// 需加入setupapi.lib

#include &lt;regstr.h&gt;
#include &lt;winbase.h&gt;

#include &lt;cfgmgr32.h&gt;
// 需要加入cfgmgr32.lib

#include &lt;initguid.h&gt;
//#include &lt;usbiodef.h&gt;
DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,
  0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
#define GUID_CLASS_USB_DEVICE          GUID_DEVINTERFACE_USB_DEVICE

int main(int argc, _TCHAR* argv[])
{
  HDEVINFO hDevInfo;

  SP_DEVINFO_DATA DeviceInfoData;
  DWORD i;

  //--------------------------------------------------------------------------
  // 获取设备信息
  hDevInfo = SetupDiGetClassDevs((LPGUID)&amp;GUID_CLASS_USB_DEVICE,
      0, // Enumerator
      0,
      DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
  if (hDevInfo == INVALID_HANDLE_VALUE) {
      // 查询信息失败
      printf("ERROR - SetupDiGetClassDevs()");
      return 1;
  }
  //--------------------------------------------------------------------------

  // 枚举每个USB设备
  DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
  for (i=0;SetupDiEnumDeviceInfo(hDevInfo, i, &amp;DeviceInfoData);i++)
  {
        LPTSTR buffer = NULL;
        PVOID buffer2 = NULL;
        DWORD buffersize = 0;
        ULONG len;
        CONFIGRET  cr;
        PNP_VETO_TYPE pnpvietotype;
        CHAR vetoname[MAX_PATH];
        ULONG ulStatus;
        ULONG ulProblemNumber;

        cr = CM_Get_DevNode_Status( &amp;ulStatus,
                                    &amp;ulProblemNumber,
                                    DeviceInfoData.DevInst,
                                    0);
        if ( CR_SUCCESS == cr ) {
            printf("OK - CM_Get_DevNode_Status()[%d]\n", cr);
            printf("OK - CM_Get_DevNode_Status() sts [%x]\n", ulStatus);
            printf("OK - CM_Get_DevNode_Status() pro [%x]\n", ulProblemNumber);
        } else {
            printf("ERROR - CM_Get_DevNode_Status()[%d]\n", cr);
            printf("ERROR - CM_Get_DevNode_Status()[%d]\n", GetLastError());
        }
        // DN_DISABLEABLE or DN_REMOVABLE
        if ((DN_DISABLEABLE &amp; ulStatus ) != 0 ) {
            printf("HAS - DN_DISABLEABLE()[%x]\n", DN_DISABLEABLE &amp; ulStatus);
        } else {
          continue;
        }
        if ((DN_REMOVABLE &amp; ulStatus ) != 0 ) {
            printf("HAS - DN_REMOVABLE()[%x]\n", DN_REMOVABLE &amp; ulStatus);
        } else {
          continue;
        }

        len = MAX_PATH;
        // pnpvietotype = PNP_VetoDevice;
        cr = CM_Request_Device_Eject(
                            DeviceInfoData.DevInst,
                            &amp;pnpvietotype,
                            vetoname,
                            len,
                            0
                            );
        if ( CR_SUCCESS == cr ) {
            printf("OK - CM_Request_Device_Eject()[%d]\n", cr);
        } else {
            printf("ERROR - CM_Request_Device_Eject()[%d]\n", cr);
            printf("ERROR - CM_Request_Device_Eject()[%d]\n", GetLastError());
        }

  }


  if ( GetLastError()!=NO_ERROR &amp;&amp;
        GetLastError()!=ERROR_NO_MORE_ITEMS )
  {
      // Insert error handling here.
      return 1;
  }

  //  Cleanup
  SetupDiDestroyDeviceInfoList(hDevInfo);

  return 0;
}[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-4-20 10:51:00 | 显示全部楼层
<P> 可以从硬件上考虑吗?</P><P>  XP中不是可以直接插拔吗?</P><P>如果怕烧机加PCI TO USB卡看下,</P>
点评回复

使用道具 举报

发表于 2006-4-20 14:58:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>zwm0735</I>在2006-3-26 11:53:00的发言:</B>

<P>楼上发的是龙旗的MP3下载工具!</P>
<P>  是可以的!但是用多会经常出现注册表空间不足!!!</P>
<P>反正我这是这样子的!几乎每台用过这个软件的PC都有出现注册表空间不足</P>[upload=jpg]UploadFile/2006-3/06326@52RD_未命名.JPG[/upload]

<P align=right><FONT color=red>+1 RD币</FONT></P></DIV>


你还使用"网络执法官".你太恨了
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-23 22:40 , Processed in 0.051228 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表