vb中如何获取系统默认打印机的名称

vb中如何获取系统默认打印机的名称,第1张

Const HKLM = &H80000002 '定义根键常数

'其他常用根键 Const HKCR = &H80000000 , Const HKCU = &H80000001

Set oReg = GetObject("winmgmts:\\\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"

oRegEnumKey HKLM, strKeyPath, arrSubKeys '枚举子项,赋值给数组arrSubKeys

For Each subkey In arrSubKeys

Print subkey

Next

For Each x In Printers

FindPrinter strPrint, xDeviceName

next

Function FindPrinter(ByRef PrinterName As String, Optional ByVal PrinterDescription As String = "") As Boolean

' 查指定打印机

Dim objRegistry As Object

Dim arrSubKeys As Variant

Dim subkey As Variant

Dim KeyValue As Variant

If Len(PrinterDescription) > 0 Then

Set objRegistry = GetObject("winmgmts:\\\root\default:StdRegProv")

objRegistryEnumValues &H80000001, "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts", arrSubKeys

For Each subkey In arrSubKeys

If InStr(1, subkey, PrinterDescription) Then

objRegistryGetStringValue &H80000001, "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\", subkey, KeyValue

PrinterName = subkey & " 在 " & Mid(KeyValue, InStr(KeyValue, ",") + 1, InStr(KeyValue, ":,") - InStr(KeyValue, ","))

FindPrinter = True

Exit For

End If

Next

Set objRegistry = Nothing

End If

End Function

首先贴出一下选择框的网页元素代码<div class="select"><select id="cond_PSPT_TYPE" name="cond_PSPT_TYPE" disabled="disabled" class="e_select" desc="选择框" type="text"> <option value="">-----默认选择-----</option> <option value="0">选项0</option> <option value="1">选项0</option> </select></div> </div></div> 先通过IHTMLSelectElement接口获得所选item的value,程序中是strValue;再通过IHTMLOptionElement接口遍历判断value同strValue的下拉选项元素的文本信息。 CString GetText() { CString strValue; CString strText; HRESULT hr; IDispatch pDisp; pDisp = m_webBrowserget_Document(); // 获取webbrowser控件文档接口 IHTMLDocument2 pDoc; hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void)&pDoc ); // 获取 *** 作界面的文档接口 IHTMLElementCollection pColl = NULL; hr = pDoc->get_all( &pColl ); // 获取网页元素集合 // ------------------------获取选择框的所选item的value----------------------------------------- VARIANT index; VARIANT varID; V_VT(&index) = VT_I4; V_I4(&index) = 0; CString IDSelect = "cond_PSPT_TYPE"; // IDSelect是选择框的网页元素ID varID = StringToVariant(IDSelect); hr = pColl->item(varID, index, &pDisp); // 获得选择框位置 if ( (hr == S_OK) && (pDisp != NULL) ) { IHTMLSelectElement pSelect; // 获得选择框元素接口 hr = pDisp->QueryInterface(IID_IHTMLSelectElement,(void )&pSelect ); if ( (hr == S_OK) && (pSelect != NULL) ) { BSTR bstr = SysAllocString(L""); pSelect->get_value(&bstr); // 获取选择框所选item的value strValue = bstr; pSelect->Release(); } pDisp->Release(); } // ------------------------获取选择框的所选item的文本信息-------------------------------------- long cntElement; hr = pColl->get_length(&cntElement); // 获取网页元素个数 for(int i = 0; i < cntElement; i++) { IDispatch pDisp2; V_I4(&index) = i; hr = pColl->item( index,index, &pDisp2 ); // 获取元素位置 if ( (hr == S_OK) && (pDisp2 != NULL) ) { IHTMLOptionElement pOptElem; // 获取下拉选项元素接口 hr = pDisp2->QueryInterface(IID_IHTMLOptionElement,(void )&pOptElem); if ( (hr == S_OK) && (pOptElem != NULL) ) { BSTR bstr = SysAllocString(L""); pOptElem->get_value(&bstr); // 获取下拉选项元素的value CString strTemp = ""; strTemp = bstr; if(strTemp == strValue) { pOptElem->get_text(&bstr); // 获取下拉选项元素的文本信息 strText = bstr; i = cntElement; } pOptElem->Release(); } pDisp2->Release(); } } pDoc->Release(); pColl->Release(); return strText; }

当然,是获得当页面已经完成了从事件相关的事件发生时加载信息-wegocomsg DocumentCompleted。导航发生前

在BeforeNavigate2

。 (当刷新页面后,此事件不会发生) - 中东

CommandStateChange

状态发生变化时,命令这事件告诉您何时做出

BR>

的DocumentComplete

时或禁用后退和前进的菜单类似或按钮来加载全部完成整个文档发生,如果您刷新页面,此事件不会激发。

DownloadBegin

当下载时,该项目开始,这一事件也刷新发生(的IWebBrowser2 ::

NavigateComplete2

DownloadComplete

党的刷新会出现下载整个项目完工)。发生该事件也发生在完成刷新页面。

当完成整个导航此事件对应于在BeforeNavigate2。

项NewWindow2

在新窗口被创建来显示网页或其他资源时发生。例如,你在打开一个新的窗口,连接

OnFullScreen

全屏财产的方式在页面上,当时间发生改变。此事件带有VARIANT_ BOOL类型的输入参数指示是否IE浏览器的全屏(全屏)模式(VARIANT_TRUE),或在正常模式(VARIANT_FALSE)。该发生的时候

OnMenuBar

菜单栏MenuBar属性被改变。一个VARIANT_ BOOL类型的输入参数指的是IE浏览器的菜单栏属性是可见的(VARIANT_TRUE)或隐藏(VARIANT_假)。

OnQuit

当Internet Explorer正在退出发生。当用户关闭浏览器或调用Quit方法的事件。当时间发生

OnStatusBar

状态栏属性更改。活动开展VARIANT_ BOOL类型的输入参数指示是否IE浏览器的状态栏可见(VARIANT_TRUE)或隐藏(VARIANT_FALSE)。

OnTheaterMode

时TheaterMode属性更改。活动开展VARIANT_ BOOL类型的输入参数指示是否IE浏览器的状态栏可见(VARIANT_TRUE)或隐藏(VARIANT_FALSE)。在工具栏属性更改时发生

OnToolBar

。活动进行VARIANT_ BOOL类型的输入参数指示是否IE浏览器的状态栏可见(VARIANT_TRUE)或隐藏(VARIANT_FALSE)。

OnVisible

时,会出现web浏览器将显示或隐藏。本次活动进行VARIANT_ BOOL类型的输入参数指示是否IE浏览器的状态栏可见(VARIANT_TRUE)或隐藏(VARIANT_FALSE)。

ProgressChange

当下载进度更新

时发生

的PropertyChange在PropGOLuxury

当发生属性更改时间。通常情况下,当PutProperty方法被调用

StatusTextChange

Internet Explorer和改变状态栏时,WebBrowser控件发生。即使没有状态栏WebBrowser控件。 StatusTextChange给客户一个机会改变状态栏

TitleChange

。当文档对象的标题是可用还是在发生变化时

datestr=now() '取当前系统日期

sday=year(datestr)&"-"&month(datestr)&"-1" '当前月第一天

eday=DateAdd("m", 1, sday) '增加一个月时间

eday=DateAdd("d", -1, eday) '减去一天就是月末日期

eday=day(eday) '得到当月天数

A初识字典

1、英文名字 Dictionary

2、存在于 Scrrundll 文件中

3、需将文件注册到系统中

4、需引用文件的声明方法

41、Dim D As ScriptingDictionary (使用时还需用代码创建)

42、Dim D As New ScriptingDictionary(对象实例化声明,声明后可直接使用)

43、声明时 Scripting 可省略

5、创建法

51、Set D=CreateObject("ScriptingDictionary")

52、Scripting 为 scrrun 文件的工程名称

53、Dictionary 为 Scripting 工程中的一个类模块(功能模块)

6、字典中的两项(条目)

61、Key(Variant类型),在字典中不重复(必需的)

若key是对象则允许有重复

62、Item(Variant类型),key所对应的“备注”信息(必需的)

63、演示代码在字典中新建一条key及对应item都为“”的数据

DAdd "",""

两个“”,缺一不可

若继续再次使用此代码创建将报错误

7、它有4个属性,6个方法

属性:CompareMode ,Count ,Item ,Key

方法:Add ,Exists,Items ,Keys,Remove ,RemoveAll

B字典6方法

1、Add 方法

用法 ObjectAdd(Key,Item)

向 Dictionary 对象中添加关键字项目对

Object 必需的,总是一个Dictionary对象、11

Item 必需的,与被添加的 Key 相关联的 Item、12

Key 必需的,与被添加的 Item 相关联的 Key、13

若添加的key已经存在,则导致一个错误、14

示例代码

DAdd "A" , "Athens"

DAdd "a" , "Activate"

CompareMode 属性(缺省)默认设置为区分大小写,因此不会报错。若设置为不区分大小写,则此句报错

DAdd "A" , "Athens"

此句报错误,因关键字key值 “A”,在这之前已经添加

DAdd Range("A1") , "Abs"

在 A1 单元格中随意输入 A 或 a

因省略了value 在字典中添加关键字时将单元格A1视为对象添加到字典(对象可以重复添加)

若添加上value 则会报错,因为 A 或 a 在之前已经创建

2、Exists 方法

用法 ObjectExists(key)

如果 Dictionary 对象中存在所指定的关键字,则返回True,否则返回False

Object 必需的,总是一个Dictionary对象、21

key 必需的,需要在 Dictionary 中搜索的 Key值、22

示例代码

DebugPrint DExists("A")

返回True,因之前已经添加,因此该关键字 “A” 在字典中存在

DebugPrint DExists("E")

返回False,因之前代码中未添加,因此该关键字 “E”在字典中不存在

DebugPring DExists("a")

将根据 CompareMode 属性中设置的值来返回

3、Keys

用法 ObjectKeys()

返回一个 Variant 类型的一维数组,其中包含了一个 Dictionary 对象中现有的全部 关键字

31、Object 必需的,总是一个 Dictionary 对象

32、如果字典中未添加关键字,则返回一个(0 to -1)的一维数组

示例代码

Arr=DKeys

运行此代码前,请不要往字典中添加任何关键字

Arr=Dkeys

自行使用 Add 往字典中添加少许数据进行测试

Arr=DKeys()

将字典中的 关键字 交给数组 Arr

Range("A1")Resize(,Ubound(Arr)+1)Value=Arr

将Arr中的值写到单元格中,写到一行里

Range("A3")Resize(Ubound(Arr)+1)Value=WorksheetFunctionTranspose(Arr)

将Arr中的值写到一列中,需要进行转置

4、Items

用法与 Keys 相同,这里不在做重复的描述

示例代码中将 Keys 改为 Items 即可

5、Remove

用法 ObjectRemove(Key)

从一个 Dictionary 对象中清除 关键字项目对

51、Object 必需的,总是一个 Dictionary 对象

52、Key 必需的,要从 Dictionary 中删除的 关键字 项目对相关联

53、如果 所指定的 关键字 不存在,将返回一个错误

示例代码

DRemove("A")

从字典中删除关键字是 A 的项目对

DRemove("E")

要删除的关键字 E 在字典中不存在,因此报错误

6、RemoveAll

用法 ObjectRemoveAll()

从一个 Dictionary 对象中清除所有关键字项目对

61、Object 必需的,总是一个 Dictionary 对象

示例代码

DRemoveAll

清除字典 D 中所有的数据,又成了一个新字典了

C字典4属性

1、CompareMode 属性

用法 ObjectCompareMode[=Compare]

设置或者返回在 Dictionary 对象中进行字符串关键字比较时所使用的 比较模式。

Object 必需的,总是一个Dictionary 对象的名称

Compare 可选项,如果提供此项,Compare 就是一个代表比较模式的值。

如果试图对已经包含数据的 Dictionary 对象的比较模式进行更改的话,就会出错

缺省为 二进制比较格式

CompareMethod 枚举说明

11、UseCompareOption

其值为 -1 使用 Option Compare 语句设置值进行比较(Excel中无效)

12、BinaryCompare

其值为 0 ,二进制比较模式

13、TextCompare

其值为 1 ,文本比较模式

14、DatabaseCompare

其值为 2 ,仅用于 MicrosoftAccess,进行基于你自己数据库中信息的比较

15若未引用 scrrundll 文件,在使用枚举时需在前面添加上vb

在VBA中为我们提供了 VbCompareMethod 枚举,其值都是一样的

即使引用了文件,也可使用 vbTextCompare

如:vbTextCompare

在 Add方法中已经有示例了,这里不在做示例

2、Count 属性

用法 Object。Count

返回集合或 Dictionary 对象中条目数。只读

Object 必需的,总是一个 Dictionary 对象

示例代码

DeBugPrint DCount

返回 0 ,说明字典中还没有条目

Dadd "A","abs"

往字典中添加条目

DeBugPrint DCount

刚才建了个,所以返回1

DAdd "V","Vlookup"

往字典中添加条目

DeBugPrint DCount

刚才又建了一个,返回返回 2

3、Key 属性

用法 ObjectKey(Key)=NewKey

31、在 Dictionary 对象中修改一个Key

32、Object 必需的,总是一个 Dictionary 对象的名称

33、Key 必需的,被改变的 Key 值

34、NewKey 必需的,替换所指定的 Key的新值。

35、如果在改变一个Key时没发现该 Key ,将会报错。

示例代码

dadd "A","Abs"

dkey("A")="B"

此时原字典中的关键字 A 被更改为 B

dkey("A")="B"

再次运行此代码,因关键字 A已不存在,报错误。

通俗的理解是,修改 key

4、Item 属性

用法 ObjectItem(Key)[=NewItem]

41、Item为Dictionary的缺省(默认)属性,因此在使用时可以 d(key)=""

42、在一个 Dictionary 对象中设置或返回所指定 key 的 Item。对于集合则根据所指定的key返回一个 item。读/写

43、Object 必需的,总是一个 Dictionary 对象的名字

44、Key 必需的,与被查找或添加的 item 相关联的 key

45、NweItem 可选项,仅适用于 Dictionary 对象,就是与所指定的 Key 相关联的新值

46、如果在改变一个 key 的Item时候没有该 key ,那么将利用所指定的 NewItem 创建一个新的 Key

47、如果在试图返回一个已有项目的时候没有找到 Key ,那么将创建一个新的 Key 且其相关的项目被设置为空

示例代码

DAdd "A","Abs"

在字典中添加一个关键字 A,它对应的 item是 “Abs”

DItem("A")="And" 等同于 D("A")="And"

将字典中关键字为 A 的Item修改为 “And”

Ditem("E")="Excel"

试图修改关键字 E 的item为 Excel,因在字典中并没有该关键字的存在,此句起了 add 的作用

DebugPrint DItem("B")

返回字典中关键字为 B 的Item,因字典中并没有添加这个关键字,因此会将该关键字添加到字典中其对应的 Item 为 ""

根据它的特性,理解为修改指定key的Item,若没有该 key 则根据表达式新建一个,其对应的 Item 将受表达式影响。

DateDiff 函数

返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

语法

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

DateDiff 函数语法中有下列命名参数:

部分 描述

interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔

Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。

Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。

设置

interval 参数的设定值如下:

设置 描述

yyyy 年

q 季

m 月

y 一年的日数

d 日

w 一周的日数

ww 周

h 时

n 分钟

s 秒

firstdayofweek 参数的设定值如下:

常数 值 描述

vbUseSystem 0 使用 NLS API 设置。

vbSunday 1 星期日(缺省值)

vbMonday 2 星期一

vbTuesday 3 星期二

vbWednesday 4 星期三

vbThursday 5 星期四

vbFriday 6 星期五

vbSaturday 7 星期六

常数 值 描述

vbUseSystem 0 用 NLS API 设置。

vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。

vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。

vbFirstFullWeek 3 从第一个无跨年度的星期开始。

以上就是关于vb中如何获取系统默认打印机的名称全部的内容,包括:vb中如何获取系统默认打印机的名称、怎么用VBS获取已经打开网页元素的文本信息、vb获取webrowser网页某一按钮并点击等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9305679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存