初学VB 请各位大侠指点迷津

admin 发表于 2011-03-04 19:34 浏览次数:

本人刚接触 VB 在网上找了个源码 想做个小程序,这段码是通过 标题枚举的 我想要 用类名枚举的并实现 同样的功能 希望高手帮忙 改一下 先谢过各位大虾!!!

VB.NET code
Option Explicit Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 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 GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hprocess As Long, ByVal uExitCode As Long) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Dim winhwnd As Long Private Const PROCESS_TERMINATE = 1 Private Const SW_RESTORE = 9 Private Const WM_CLOSE = &H10 Private Const GW_CHILD = 5 Private Const GW_HWNDNEXT = 2 Private Handle As Long '监视包含文字的数量。 Dim CloseCX(1) As String Private Sub Command1_Click() If Command1.Caption = "开始监视" Then Timer1.Enabled = True Command1.Caption = "暂停监视" Else Command1.Caption = "开始监视" Timer1.Enabled = False End If End Sub Private Sub Form_Load() Timer1.Enabled = False Timer1.Interval = 1000 Command1.Caption = "开始监视" '监视包含以下文字的窗口。 CloseCX(0) = "QY" CloseCX(1) = "QY" End Sub '该函数用来取得系统中所有打开的窗口 Public Function GetAllWindows() As Long '用来保存窗口的句柄 Dim hwnd As Long Dim Fx As Integer '取得桌面窗口 hwnd = GetDesktopWindow() '取得桌面窗口的第一个子窗口 hwnd = GetWindow(hwnd, GW_CHILD) Dim strTitle As String * 255 '用来存储窗口的标题 '通过循环来枚举所有的窗口 Do While hwnd <> 0 '取得下一个窗口的标题 GetWindowText hwnd, strTitle, Len(strTitle) If Left$(strTitle, 1) <> vbNullChar Then For Fx = 0 To UBound(CloseCX, 1) If InStr(Left$(strTitle, InStr(1, strTitle, vbNullChar)), CloseCX(Fx)) > 0 Then '检查是否包含定义的字符 Handle = FindWindow(vbNullString, Left$(strTitle, InStr(1, strTitle, vbNullChar))) ShowWindow Handle, SW_RESTORE End If Next End If '调用GetWindow函数,来取得下一个窗口 hwnd = GetWindow(hwnd, GW_HWNDNEXT) Loop End Function Private Sub Timer1_Timer() Call GetAllWindows End Sub
分类: VB.Net | 评论数: 7 | 阅读全文

如何比较当前时间

admin 发表于 2011-03-04 17:43 浏览次数:

语言 VB

要求:当天的日期(不要时间),与变量A(也是日期)比较,若 变量当前日期比变量A大 则不执行程序

求指教!

分类: VB.Net | 评论数: 13 | 阅读全文

VB6转VB.NET遇到String定长的问题

admin 发表于 2011-03-04 17:43 浏览次数:

VB6.0的代码中有如下定义:
Private Declare Function ZgnDirctTran Lib "ZGNTCP.DLL" (zc As MyType) ‘静态库
… …

Public Type MyType
  … …
  MyString As String * 51
  … …
End Type

用VS2008转换后变成:
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> Public Structure MyType
  … …
  <VBFixedString(51), MarshalAs(UnmanagedType.ByValArray, SizeConst:=51)> Public MyString() As Char
  … …
End Structure

赋值的时候:
Dim lType As MyType = New MyType
lType.MyString = "一二三123" & New String(Chr(&H0), 51 – Len("一二三123")) ‘后面是补位

然后把lType作为参数传入静态库的方法ZgnDirctTran(),报错:定义的长度不一致,类型无法匹配…

我曾经试过用:
<VBFixedString(51), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=51)> Public MyString As String

但会报另一个错:字符定义的长度比实际赋值的短,无法容纳

我估计原因是因为.Net里面的默认汉字编码占了两位,而Len返回的值是6,所以实际MyString的长度为:9+51-6=54,溢出了。
而老的VB6.0采用的是ASC码,一个汉字只占一位,所以不会溢出。

请教高手们,怎么修改这段代码?
或者说,我有什么办法在.Net里面把汉字全部转换成ASC码再传入ZgnDirctTran方法?

分类: VB.Net | 评论数: 8 | 阅读全文

ComboBox.Items获取问题

admin 发表于 2011-03-04 17:43 浏览次数:

MS的ComboBox的Items是Object类型的。

因为我需要每个Item保存多个值,所以就将类作为Item加入到Items中,并重写了ToString以显示我想要的文本。

但当我获取的时候,如Dim val=ComboBox1.Items(0)
提示我未找到类型为“XXX”的默认成员,异常类型是MisssingMemberException
这是什么原因?

我的这个类是定义在另一个类中的,但都是公有类。

分类: VB.Net | 评论数: 4 | 阅读全文

将VB.NET转成VB6

admin 发表于 2011-03-04 17:43 浏览次数:

如题,各位,小弟现在手上有一VB.NET项目,需要转成VB6,请问有没有这方面的工具或者资料.因为代码和窗体实在多,所以需要找这面的资料和工具,谢谢

分类: VB.Net | 评论数: 12 | 阅读全文

socket服务器端如何客户端是否断开

admin 发表于 2011-03-04 17:42 浏览次数:

一个一般的form程序一个为server,里面含有一个listbox,和一个label,listbox里面动态显示当前在线的客户端ip地址和登陆使用的用户名,label就动态显示当前在线客户的数量。当客户端建立和断开或关闭时都会动态的更新。并且活动连接客户端最多为10个,当第11个试图连接时,给处msgbox信息说超出最大连接数量,禁止接入。

另外一个一般的from程序为client,里面一个textbox和button1、button2,textbox输入服务器端ip地址,button1根据ip地址建立和服务器端的连接,button2负责断开和服务器端的连接。

多谢。小弟在学习socket的聊天室。请给出完整源码,不胜感激,如果时完整的聊天室代码更佳。

分类: VB.Net | 评论数: 8 | 阅读全文

在vb.net里如何编写程序分析网页上的元素?

admin 发表于 2011-03-04 17:42 浏览次数:

比如我想获取http://www.getprice.com.au/Browse-Categories.htm这个页面上的所有分类信息,读取后存成一个文件。程序应该怎么写?

有人说是用webbrowser控件,能否给出一些具体的步骤?

谢谢!

分类: VB.Net | 评论数: 12 | 阅读全文

关于vb.net中TreeView的note编辑问题

admin 发表于 2011-03-04 17:42 浏览次数:

有一个form ,上面存在一个treeview,还有一个edit button,怎么实现选中一个note,点击edit button,此时的note可以编辑,编辑完后,点击鼠标左键完成编辑,编辑完后,note不能编辑了,只有再次点击edit button 才能再次编辑。

我的代码如下,为什么达不到我要求的效果,请高手指教!谢谢!

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  If Not Me.TreeView1.SelectedNode Is Nothing Then
  Me.TreeView1.LabelEdit = True
  Me.TreeView1.SelectedNode.BeginEdit()
  If Me.TreeView1.SelectedNode.IsEditing = False Then
  Call endEdit()
  End If
  End If
  End Sub
  ‘the treeview edit end
  Private Sub endEdit()
  Me.TreeView1.LabelEdit = False
  End Sub

分类: VB.Net | 评论数: 4 | 阅读全文

高分急问:在windows程序中,servlet调用的问题

admin 发表于 2011-03-04 17:42 浏览次数:

由于项目的需要,我需要在windows程序中向一个web服务器发出一个请求,我会传给他一个用户名和密码,如果用户名和密码正确则web服务器回传给我一个部门信息,如果错误他会传给我一个错误信息,我该怎么实现

分类: VB.Net | 评论数: 8 | 阅读全文

VB.NET 浏览器 收藏夹

admin 发表于 2011-03-04 17:42 浏览次数:

VB.NET 如何实现像IE 里的收藏夹一样,添加进网址后,显名链接的内容,点击它时,把链接的地址/href提交给 Webbrowser?

用LISTBOX控件可以实现收藏夹这样的功能吗?

分类: VB.Net | 评论数: 2 | 阅读全文

按住鼠标左键不动触发什么事件

admin 发表于 2011-03-04 17:23 浏览次数:

我有一个数据列表的DATAGIRDVIEW,一个BUTTON,想鼠标按住BUTTON,DATAGIRDVIEW中的选中行不停的往下,松开BUTTON,光标就停下。请问该写在哪个事件中啊?

分类: VB.Net | 评论数: 12 | 阅读全文

windows server 2008 R2 X64 不能使用OpenFileDialog 类吗

admin 发表于 2011-03-04 17:23 浏览次数:

Dim OpenFile As OpenFileDialog = New OpenFileDialog With
  {
  .Multiselect = True,
  .Title = "请选择要导入数据的 Excel 文件",
  .Filter = "Microsoft Office Excel 的文件|*.xlsx;*.xls",
  .RestoreDirectory = True
  }
  If OpenFile.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
  OpenFile.Dispose()
  Exit Sub
  End If

一执行就报错。

分类: VB.Net | 评论数: 5 | 阅读全文

AddPicture无法正常运行[vb.net]

admin 发表于 2011-03-04 17:23 浏览次数:

我使用Shapes.AddPicture向excel中插入图片,但是当调试到这句时就无法再运行下去了,而且也不报错。
代码如下:
Dim   xapp   As   New   Microsoft.Office.Interop.Excel.Application
                Dim   wb   As   Microsoft.Office.Interop.Excel.Workbook
                Dim   ws   As   Microsoft.Office.Interop.Excel.Worksheet
                Dim   sRanges   As   Microsoft.Office.Interop.Excel.Range
                Try
                        xapp   =   GetObject(,   "Excel.Application ")
                        If   Err.Number()   <>   0   Then
                                Err.Clear()
                                xapp   =   CreateObject( "Excel.Application ")
                                If   Err.Number()   <>   0   Then
                                        Response.Clear()
                                        Response.Write( " <script   type= 'text/javascript '> alert( '服务器沒有安裝Excel ') </script> ")
                                        Response.End()
                                        Return
                                End   If
                        End   If
                        Dim   sFIlE_SAVEAS_PATH   As   String   =   Request.MapPath( "\singsong.quote\ ")   &   "picklist_process\ExeclTemplate\quote.xls "
                        xapp.Visible   =   False
                        wb   =   xapp.Workbooks.Open(sFIlE_SAVEAS_PATH)
                        wb.Activate()
                        ws   =   wb.Sheets(1)
                        ws.Activate()
sRanges   =   ws.Cells(i,   3)
                                        Dim   sgoodsno   As   String   =   drdb.Item( "goodsno ").ToString()
                                        Dim   sgoodsnos   As   String()   =   sgoodsno.Split(Chr(13)   +   Chr(10))
                                        sgoodsno   =   " "
                                        Dim   Left   As   Single
                                        Dim   Top   As   Single
                                        Dim   width   As   Single
                                        Dim   height   As   Single
                                        Dim   igoods   As   Integer   =   0
                                        Left   =   Single.Parse(CDec(sRanges.Left)   +   1)
                                        Top   =   Single.Parse(CDec(sRanges.Top)   +   1)
                                        width   =   Single.Parse(CDec(sRanges.Width))
                                        height   =   Single.Parse(CDec(sRanges.Height))

                                        For   Each   sgoodsno   In   sgoodsnos
                                                If   (sgoodsno   <>   " ")   Then
                                                        Dim   sMapPath   As   String
                                                        sMapPath   =   Request.MapPath( "\singsong.quote\ ")   &   "goods_pic\ "   &   sgoodsno.Trim()   &   ".jpg "
                                                        Dim   bfileIsExists   As   Boolean   =   System.IO.File.Exists(sMapPath)
                                                        If   (bfileIsExists)   Then
                                                                If   igoods   <>   0   Then
                                                                        Top   =   height
                                                                        sRanges.RowHeight   =   height   *   (igoods   +   1)
                                                                End   If
                                                                sRanges.Select()
                                                                'wb.ActiveSheet.Pictures.Insert(sMapPath)
                                                                Dim   sShape   As   Microsoft.Office.Interop.Excel.Shape
                                                                sShape   =   ws.Shapes.AddPicture(sMapPath,   Microsoft.Office.Core.MsoTriState.msoFalse,   MsoTriState.msoTrue,   Left,   Top,   width,   height)
                                                                igoods   =   igoods   +   1
                                                        End   If
                                                End   If
                                        Next

分类: VB.Net | 评论数: 2 | 阅读全文

关于下载文件

admin 发表于 2011-03-04 17:23 浏览次数:

对于下载那些存放在数据库里,通过id来指向该文件的文件来说,例如下面的地址:
  http://www.xdowns.com/soft/xdowns2009.asp?softid=72735&downid=49&id=75291
如何才能像迅雷那样,在下载之前就能获得文件名,以及文件在主机存放的完整路径,达到智能命名的目的

再就是用my提供的下载时,如果是像上面那样的地址,而不是文件完整路径那种,下载的是一个无效的文件,各位可以试试,这是为什么

分类: VB.Net | 评论数: 4 | 阅读全文

客户端升级方法征集

admin 发表于 2011-03-04 17:23 浏览次数:

如题:
情况是这样的,我们厂里有上百台PC,90%PC的账户都是受限用户即Power User
这样使用者的账户对系统基本没有什么权限
像这样的模式应该很多公司都存在吧
在这样情况下大家一般怎么升级客户端软件的(网管不提高客户端账户权限
我一般做法是跑到每个客户端用管理员账户去升级软件(这应该是最蠢得方式了大家别拍
大家一般遇到这样的情况是怎么升级客户端软件的
各位大大告诉下你们的经验
让我们学习借鉴下

分类: VB.Net | 评论数: 10 | 阅读全文

谁给翻译一下:

admin 发表于 2011-03-04 17:23 浏览次数:

谁给翻译一下:整成VB2005.NET

C# code
建一个类: namespace WindowsFormsApplication { public sealed class MyDataGridView : DataGridView { protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Enter) { this.OnKeyPress(new KeyPressEventArgs('r')); return true; } else return base.ProcessCmdKey(ref msg,keyData); } } } private void myDataGridView1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 'r') { DataGridView dgv = sender as DataGridView; DataGridViewCell cell = dgv.CurrentCell; if (cell.IsInEditMode) { //限制单元格只能输入test if (cell.EditedFormattedValue != null && cell.EditedFormattedValue.ToString() != "test") { MessageBox.Show("输入内容不合格"); } else { dgv.CurrentCell = dgv[cell.ColumnIndex, cell.RowIndex + 1]; } } } } private void myDataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = sender as DataGridView; DataGridViewCell cell = dgv[e.ColumnIndex, e.RowIndex]; { //限制单元格只能输入test if (cell.EditedFormattedValue != null && cell.EditedFormattedValue.ToString() != "test") { MessageBox.Show("输入内容不合格"); dgv.CurrentCell = cell ; } else { dgv.CurrentCell = dgv[cell.ColumnIndex, cell.RowIndex + 1]; } } } }

原帖地址
http://apps.hi.baidu.com/share/detail/29323393

想翻译成VB2005代码,谢谢!
(关于DATAGRIDVIEW单元格回车的)

分类: VB.Net | 评论数: 4 | 阅读全文

WebBrowser1空间弹出的新窗口如何在WebBrowser2中打开?

admin 发表于 2011-03-04 17:05 浏览次数:

窗体上放了两个WebBrowser控件,WebBrowser1和WebBrowser2.

WebBrowser1中有个链接,点击过后会弹出IE浏览器。如何点击链接过后,在WebBrowser2中打开?而不是浏览器中。

分类: VB.Net | 评论数: 9 | 阅读全文

请问怎样跨线程调用ListView?

admin 发表于 2011-03-04 17:05 浏览次数:

各位好!想请教个问题.现已知跨线程调用textbox的代码:
Public Delegate Sub SetText(ByVal str As String)

  Public Sub SetTextA(ByVal str As String)
  Me.TextBox1.Text = str
  End Sub

Me.Invoke(New SetText(AddressOf SetTextA), New Object() {"把我显示在TextBox里!"})

请问要跨线程调用ListView进行以下操作该怎么写?
  ListView1.Items.Add("1")
  ListView1.Items.Add("2")
  ListView1.Items.Add("3")

分类: VB.Net | 评论数: 3 | 阅读全文

关于子窗体关闭和进程的问题

admin 发表于 2011-03-04 17:05 浏览次数:

一个窗口,在vs里设置为启动窗体,然后里面一个button,事件是 另外一个窗口.show() Me.Finalize(),但是我调试的时候进入第二个窗体,点右上角的叉叉,关掉的仅仅是窗口,教程还在,调试依旧在执行,这是为什么?求解决方法,能做到任何一个子窗口关闭就能关闭进程,希望有简易的代码示例,我是新手

分类: VB.Net | 评论数: 3 | 阅读全文

DataGridView 滚动条定位

admin 发表于 2011-03-04 17:04 浏览次数:

我在一个   Timer_Tick   事件里每秒刷新一次   绑定一个DATATABLE   但每绑定一次DataGridView     的滚动条都会回到最上面   怎么能让DataGridView   在重新绑定的时候滚动条的位置不动?   谢谢@

分类: VB.Net | 评论数: 14 | 阅读全文

返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明