当前位置:编程学习 > VB >>

一个困惑我一长时间的VB编程问题?

朋友们,我学VB也有半年多了,从基础一直学到VB的网络编程。可能是自学的原故,可能哪里没有学全。我现在遇到了一个问题,看过VB很多资料,都没有这方面的内容。我的这个问题是:例如,我的D:盘里有这样一个文件夹:SYSTEM.EXE。当我用鼠标单击此文件夹时,删除E:盘下的MY.DIF文件.我要用VB来实现它.不用其方法.请问我应该怎么做啊?请高手们帮帮忙吧.跪谢了???
问题补充:VB高手们,再进来帮帮我吧,我这个问题还没得到解决呢?我说过我只用VB编程来实现该问题。如果要用其它方法我自己可以用几十种来实现该问题。我再申明,各位VB高手们,只用VB就实现它。
答案:
定义模块 
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'在窗口中建立一timer,然后在代码窗口输入如下代码:
Private Sub Form_Load()
Timer1.Interval = 500
End Sub

timer的代码:
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "SYSTEM") '抓取"SYSTEM"这个窗口名称.
If (hwnd = 0) Then
If MsgBox("你没有打开[SYSTEM]程序!点击“确定”退出。点“取消”继续。", 49, "错误!") = 1 Then End
ElseIf (hwnd <> 0) Then
kill d:\my.diy
End
End If
End Sub
我用鼠标单击此文件夹时?我不知道如何作到单点不打开的情况也能监视,反正肯定你只有靠 WINDOWS API去实现它了。 

以下是我对双点文件夹打开后如何实现操作。

需要监视 在WINDOWS窗口中是否有 标题为 SYSTEM.EXE 的窗口运行,假如有则删除 E盘下那个文件。

需要用到 WINDOWS API的~

给你看个代码,是关闭指定窗口的:

Private Declare Function PostMessage Lib "User32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '发送消息,用来关闭指定程序
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '查找窗体
Private Const WM_CLOSE = &H10 '关闭程序

Private Sub Command1_Click()
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "腾讯网迷你首页") '找到窗口
Debug.Print winHwnd '用来调试 在立即窗口中输入winhnd
If winHwnd <> 0 Then '这里是判断窗口是否启动 如果窗口不存在那么值为0
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&) '关闭窗口
Else
Form1.Caption = "未找到QQ新闻!"
End If
End Sub

Private Sub Command2_Click()
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "系统消息") '找到窗口
Debug.Print winHwnd '用来调试 在立即窗口中输入winhnd
If winHwnd <> 0 Then '这里是判断窗口是否启动 如果窗口不存在那么值为0
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&) '关闭窗口
Else
Form1.Caption = "未找到系统消息窗口!"
End If
End Sub




你的没这么复杂,你得靠 FIND WINDOW 查找 D盘下那个文件家是否被打开了,然后删除E盘下的文件

FindWindow

VB声明
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
说明
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)
返回值
Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数 类型及说明
lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题
注解
很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数

示例
Dim hw&, cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
cnt = GetWindowText(hw&, rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"

上一个:VB编程现在在很多公司都还实用吗?
下一个:VB编程如何让标签在窗体中来回滚动

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,