http://qqhack8.blog.163.com/blog/static/1141479852012102133475/

 
 
Delphi 自动检测U盘插入、拔出及获取U盘盘符!

u盘的 插入和删除windows会给所有的程序发出WM_DEVICECHANGE 信息
//这句放在private里面
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;

procedure TForm1.WMDeviceChange (var Msg: TMessage);
var
   myMsg : String;
begin
   Case Msg.WParam of
   32768:
     begin
       myMsg :='U盘插入';
       Label1.Caption:=myMsg
     end;
   32772:
     begin
       myMsg :='U盘拔出';
       Label1.Caption:=myMsg;
     end;
   end;
end;

u盘盘符判断

procedure TForm1.Button1Click(Sender: TObject);
var
buf:array [0..max_path-1] of char;
m_result:integer;
i:integer;
str_temp:string;
begin
m_result:=getlogicaldrivestrings(max_path,buf);
for i:=0 to (m_result div 4) do
    begin
      str_temp:=string(buf[i*4]+buf[i*4+1]+buf[i*4+2]);
      if getdrivetype(pchar(str_temp)) = drive_removable then
        begin
          showmessage(str_temp+'盘为u盘') ;
          listbox1.items.add(str_temp) ;
        end;
end;

//完整源码
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    ListBox1: TListBox;

procedure Button1Click(Sender: TObject);

private
    { Private declarations }
  //u盘的 插入和删除windows会给所有的程序发出WM_DEVICECHANGE 信息
  procedure WMDeviceChange(var Msg: TMessage);  message WM_DEVICECHANGE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// u盘的 插入和删除windows会给所有的程序发出WM_DEVICECHANGE 信息
procedure TForm1.WMDeviceChange (var Msg: TMessage);
var
   myMsg : String;
begin
   Case Msg.WParam of
   32768:
     begin
       myMsg :='U盘插入';
       Label1.Caption:=myMsg
     end;
   32772:
     begin
       myMsg :='U盘拔出';
       Label1.Caption:=myMsg;
     end;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
buf:array [0..max_path-1] of char;
m_result:integer;
i:integer;
str_temp:string;
begin
m_result:=getlogicaldrivestrings(max_path,buf);
for i:=0 to (m_result div 4) do
    begin
      str_temp:=string(buf[i*4]+buf[i*4+1]+buf[i*4+2]);
      if getdrivetype(pchar(str_temp)) = drive_removable then
        begin
          showmessage(str_temp+'盘为u盘') ;
          listbox1.items.add(str_temp) ;
        end;
end;
end;

end.

end;

Delphi 自动检测U盘插入、拔出及获取U盘盘符!的更多相关文章

  1. U盘插入拔出提示

    Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants, classes, Graphics, Controls, Forms ...

  2. iOS 检测耳机插入/拔出

    http://www.verydemo.com/demo_c134_i28481.html 开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时, ...

  3. IOS 判断耳机插入/拔出

    一. 方式 1.注册监听 //注册监听耳机设备的插入/拔出 AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChang ...

  4. iOS检测耳机插入拔出

    首先,需要导入两个框架 然后,注册通知检测耳机的插入与拔出操作 [[NSNotificationCenter defaultCenter] addObserver:self selector:@sel ...

  5. ios 耳机插入拔出检测

    [AVAudioSession sharedInstance]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@se ...

  6. 为什么U盘在拔出之前需要“安全弹出”?

    前言 我们不知道从什么时候开始有一个观念:U盘一定要点击“安全弹出”才能拔.那么是不是在任何情况下都必须要这样呢? 介绍 U盘的传输策略有两种: 写入缓存:这种策略在windows中称为“更好的性能” ...

  7. Elasticsearch 动态映射——自动检测

    ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引.类型等信息,在索引的同时会自动完成索引.类型.映射的创建. 那么什么是映射呢?映射就是描述字段的类型.如何进行分析.如何进行索引等内 ...

  8. 检测U盘插入、拨出状态

    头文件 #include <Dbt.h> 关键代码: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LP ...

  9. U盘小偷——C++实现U盘插入检测和文件扫描拷贝

    前几天女朋友说老师上课的PPT不共享,没法复习,想着写个U盘小偷拷贝PPT来着,后来觉得这样的行为这是不对的,万一不小心复制了老师的专利啥的,或者一些不可描述的东西,就闹大了. 虽然没有采取实际行动, ...

随机推荐

  1. JavaWeb中session创建与销毁的问题

    今天遇到一个奇怪的问题,自己添加了一个session的监听,用来监听在线的人数.但打开浏览器时一直没有走进这个监听中来.最后百度找到了原因: 我们一直存在一个误区,javaweb中的session什么 ...

  2. 在liberty中通过LTPA设置单点登录

    不要忘了下面的设置,参考: https://www-01.ibm.com/support/knowledgecenter/was_beta_liberty/com.ibm.websphere.wlp. ...

  3. 【Foreign】最大割 [线性基]

    最大割 Time Limit: 15 Sec  Memory Limit: 256 MB Description Input Output Sample Input 3 6 1 2 1 1 2 1 3 ...

  4. bzoj 2120 线段树套平衡树

    先吐下槽,改了快一个小时,最后发现是SBT的delete写错了,顿时就有想死的心..... 首先对于这道题,我们应该先做一下他的小问题,bzoj1878,虽然和这道题几乎一点关系没有, 但是能给我们一 ...

  5. linux设备驱动中的并发控制【转】

    转自:http://www.cnblogs.com/plinx/archive/2013/01/28/2873121.html 在linux内核中,主要的静态发生于以下几种情况: 1.对称多处理器(S ...

  6. Kuangbin 带你飞-基础计算几何专题 题解

    专题基本全都是模版应用.贴一下模版 平面最近点对 const double INF = 1e16; ; struct Point { int x,y; int type; }; double dist ...

  7. 如何在Ubuntu 16.04安装的Git【转】

    转自:https://www.howtoing.com/how-to-install-git-on-ubuntu-16-04/ 介绍 现代软件开发中不可或缺的工具是某种版本控制系统. 版本控制系统允许 ...

  8. 【 Linux 】lvs-dr模型实现HA,后端Nginx、PHP、MySQL分离 搭建wordpress站点

    要求:    1. wordpress程序通过nfs共享给各个realserver    2. 后端realserver中的nginx和php分离 网络结构图: 环境说明:    OS:centos6 ...

  9. 【 Ngnix 】配置路径转发至后端Apache多台虚拟主机

    一.安装apache并开启端口 [root@server ~]# netstat -ntplu | grep httpd tcp /httpd tcp /httpd 二.nginx配置 locatio ...

  10. a标签实现不跳转点击

    <a class="tiao" href="./index.php"></a> JS实现无跳转a标签 <script type=& ...