vb.net怎么调用GetOpenFileName函数,我的代码如下:

问题描述

PrivateDeclareFunctionGetForegroundWindowLib"user32"()AsIntegerPrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWndAsInteger,ByValnIndexAsInteger)AsInteger'''<summary>'''对话框返回错误信息'''</summary>'''<returns></returns>'''<remarks></remarks><DllImport("comdlg32.dll",SetLastError:=True,CharSet:=CharSet.Auto,EntryPoint:="CommDlgExtendedError")>_PrivateFunctionCommDlgExtendedError()AsIntegerEndFunction'''<summary>'''获取文件标题'''</summary>'''<paramname="lpszFile"></param>'''<paramname="lpszTitle"></param>'''<paramname="cbBuf"></param>'''<returns></returns>'''<remarks></remarks><DllImport("comdlg32.dll",SetLastError:=True,CharSet:=CharSet.Auto,EntryPoint:="GetFileTitleA")>_PrivateFunctionGetFileTitle(ByVallpszFileAsString,ByVallpszTitleAsString,ByValcbBufAsInteger)AsIntegerEndFunction<DllImport("comdlg32.dll",SetLastError:=True,CharSet:=CharSet.Auto,EntryPoint:="GetOpenFileNameA")>_PrivateFunctionGetOpenFileName(<[In],Out>ByValofnAsOPENFILENAME)AsBooleanEndFunction'''<summary>'''保存文件对话框API'''</summary>'''<paramname="ofn"></param>'''<returns></returns>'''<remarks></remarks><DllImport("comdlg32.dll",SetLastError:=True,CharSet:=CharSet.Auto,EntryPoint:="GetSaveFileNameA")>_PrivateFunctionGetSaveFileName(<[In],Out>ByValofnAsOPENFILENAME)AsBooleanEndFunctionPrivateStructureOPENFILENAMEDimlStructSizeAsIntegerDimhWndOwnerAsIntegerDimhInstanceAsIntegerDimlpstrFilterAsStringDimlpstrCustomFilterAsStringDimnMaxCustFilterAsIntegerDimnFilterIndexAsIntegerDimlpstrFileAsStringDimnMaxFileAsIntegerDimlpstrFileTitleAsStringDimnMaxFileTitleAsIntegerDimlpstrInitialDirAsStringDimlpstrTitleAsStringDimFlagsAsOFN_STYLEDimnFileOffsetAsShortDimnFileExtensionAsShortDimlpstrDefExtAsStringDimlCustDataAsIntegerDimlpfnHookAsIntegerDimlpTemplateNameAsStringDimpvReservedAsIntegerDimdwReservedAsIntegerDimFlagsExAsIntegerEndStructurePrivateEnumOFN_STYLEAsIntegerOFN_READONLY=&H1OFN_OVERWRITEPROMPT=&H2OFN_HIDEREADONLY=&H4OFN_NOCHANGEDIR=&H8OFN_SHOWHELP=&H10OFN_ENABLEHOOK=&H20OFN_ENABLETEMPLATE=&H40OFN_ENABLETEMPLATEHANDLE=&H80OFN_NOVALIDATE=&H100OFN_ALLOWMULTISELECT=&H200OFN_EXTENSIONDIFFERENT=&H400OFN_PATHMUSTEXIST=&H800OFN_FILEMUSTEXIST=&H1000OFN_CREATEPROMPT=&H2000OFN_SHAREAWARE=&H4000OFN_NOREADONLYRETURN=&H8000&OFN_NOTESTFILECREATE=&H10000OFN_NONETWORKBUTTON=&H20000OFN_NOLONGNAMES=&H40000OFN_EXPLORER=&H80000OFN_NODEREFERENCELINKS=&H100000OFN_LONGNAMES=&H200000OFN_ENABLEINCLUDENOTIFY=&H400000OFN_ENABLESIZING=&H800000OFN_DONTADDTORECENT=&H2000000OFN_FORCESHOWHIDDEN=&H10000000OFN_SHAREWARN=0OFN_SHARENOWARN=1OFN_SHAREFALLTHROUGH=2EndEnumPublicFunctionOpenFileDialog(OptionalFileFilterAsObject="",OptionalFilterIndexAsInteger=1,OptionalInitPathAsString="",OptionalTitleAsString="",OptionalMultiSelectAsBoolean=False,OptionalAllowHookAsBoolean=False)AsStringDimOFNAsOPENFILENAME=NewOPENFILENAME,sFileAsString="",iFilterAsIntegerDimmTypeNameAsString,mFilterAsString,mFilterIndexAsInteger,mInitPathAsString,mTitleAsString,mMultiSelectAsBoolean,mAllowHookAsBoolean'获取模块句柄DimMdlAsSystem.Reflection.Module=System.Reflection.Assembly.GetExecutingAssembly.GetModule(My.Application.Info.AssemblyName&".exe"),hInstanceAsIntPtrIfNotMdlIsNothingThenhInstance=Marshal.GetHINSTANCE(Mdl)Mdl=NothingEndIf'对话框标题IfTitle=""ThenmTitle="选择一个文件:"ElsemTitle=Title'初始路径IfInitPathLike"[C-Z]]:*"ThenmInitPath=InitPathElsemInitPath=CurDir()IfmInitPath="[C-Zc-z]:*[]"ThenmInitPath=Microsoft.VisualBasic.Left(mInitPath,Len(mInitPath)-1)'文件过滤mTypeName=TypeName(FileFilter)IfIsNumeric(FileFilter)=TrueThenIfFileFilter=1ThenmFilter="Excel2003工作薄,*.xls,Excel2007工作薄,*.xlsx,Excel启用宏工作薄,*.xlsm,所有Excel工作薄,*.xl*"ElseIfFileFilter=2ThenmFilter="Word2003文档,*.doc|Word2007文档,*.docx|Word启用宏文档,*.docm|所有文件,*.*"ElseIfFileFilter=3ThenmFilter="JPG图片,*.jpg|PNG图片,*.png|BMP图片,*.bmp|GIF图片,*.gif"ElseIfFileFilter=4ThenmFilter="文本文件,*.txt|所有文件,*.*"ElsemFilter="所有文件(*.*),*.*"EndIfElseIfmTypeName="String"ThenmFilter=CStr(FileFilter)ElsemFilter="AllFiles(*.*),*.*"EndIfmFilter=Replace(Replace(Replace(Replace(mFilter,"|",vbNullChar),",",vbNullChar),">",vbNullChar),"",vbNullChar)iFilter=(UBound(Split(mFilter,vbNullChar))+1)2IfFilterIndex>=1AndFilterIndex<=iFilterThenmFilterIndex=CInt(FilterIndex)ElsemFilterIndex=1mMultiSelect=(MultiSelect=1OrMultiSelect=True)mAllowHook=(AllowHook=1OrAllowHook=True)WithOFN.lStructSize=Len(OFN).Flags=OFN_STYLE.OFN_EXPLOREROrOFN_STYLE.OFN_FILEMUSTEXISTOrOFN_STYLE.OFN_PATHMUSTEXISTOrOFN_STYLE.OFN_NOLONGNAMESOrOFN_STYLE.OFN_HIDEREADONLYOrOFN_STYLE.OFN_DONTADDTORECENTIfmMultiSelect=TrueThen.Flags=.FlagsOrOFN_STYLE.OFN_ALLOWMULTISELECT.lpstrTitle=mTitle.hWndOwner=GetForegroundWindow().hInstance=GetWindowLong(.hWndOwner,-6).lpstrFilter=mFilter.lpstrInitialDir=mInitPath.nFilterIndex=mFilterIndex.nMaxFile=2048.lpstrFile=StrDup(.nMaxFile,vbNullChar).nMaxFileTitle=1024.lpstrFileTitle=StrDup(.nMaxFileTitle,vbNullChar).nFileOffset=0.nFileExtension=0IfmAllowHook=TrueThen.Flags=.FlagsOrOFN_STYLE.OFN_ENABLEHOOKOrOFN_STYLE.OFN_ENABLESIZING.lpfnHook=0.lCustData=0EndIfEndWithIfGetOpenFileName(OFN)=TrueThenDimPutDataAsIntegersFile=OFN.lpstrFilePutData=InStr(sFile,vbNullChar&vbNullChar)IfPutData>0ThensFile=Left(sFile,PutData-1)ElseIfRight(sFile,1)=vbNullCharThensFile=Left(sFile,Len(sFile)-1)EndIfFilterIndex=OFN.nFilterIndexPutData=InStr(sFile,vbNullChar)IfPutData>0ThenmInitPath=Left(sFile,PutData-1)InitPath=mInitPathIfRight(mInitPath,1)<>""ThenmInitPath=mInitPath&""sFile=Mid(sFile,PutData+1)sFile=mInitPath+Replace(sFile,vbNullChar,vbCrLf&mInitPath)ElseInitPath=Left(sFile,Len(sFile)-Len(Dir(sFile)))EndIfEndIfMsgBox(CommDlgExtendedError(),48)ReturnsFileEndFunction

请各位高手帮忙修改一下,谢谢大家!

解决方案

解决方案二:
直接用OpenFileDialog为什么不行呢
解决方案三:
使用OpenFileDialog控件类,不能够自定义

时间: 2024-09-18 20:15:58

vb.net怎么调用GetOpenFileName函数,我的代码如下:的相关文章

java-Java源文件是如何调用本地函数的

问题描述 Java源文件是如何调用本地函数的 Java 源文件是如何调用本地函数的?我在代码中没有看到调用本地函数库的代码啊 解决方案 通过JNI,JNI为Java虚拟机打开一个通道,允许你访问本地函数. 解决方案二: 用java统计一个目录(含子目录)下所有java源文件中代码行数分割源文件的Java程序 解决方案三: 你是想问java程序执行过程,还是想问怎么使用本地的库函数啊,使用本地库函数的话,使用impot 导入需要的包,程序中即可使用该包中的类

Python自定义函数的创建、调用和函数的参数详解_python

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创见函数,这被叫做用户自定义函数.一.定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则: 1.函数代码块以def关键词开头,后接函数标识符名称和圆括号().2.任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数.3.函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明.4.

VB.net 在64位win7系统下,调用API函数,在传址时为什么总会发生异常。。

问题描述 请帮教各位高人,VB.net在64位win7系统下,调用API函数,在传址时为什么总会发生异常..函数声明:DeclareSubdmc_move_line3Lib"DMC.dll"(ByRefaxisAsShort,ByValDist1AsInteger,ByValDist2AsInteger,ByValDist3AsInteger,ByValposi_modeAsShort)函数调用:DimAxisArray(3)AsShortDimLineEndArray(3)AsInt

vb.net如何调用Hook

本文不是讲解Hook原理的文章,仅是讨论一下在vb.net如何调用Hook功能,以及vb.net中API使用的变化问题.由于Hook种类较多,本文中以最常用的键盘Hook为例进行分析.一.先来看一下在vb中是如何实现的.截的是空格键.表现的目标是:一个form,上面有一个textbox,不管焦点是否落在textbox里,按空格键,不会在textbox中输入一个空格,而是变成在textbox中写入一句话:"HOOK成功!"1.在一个Module中写入下列代码:调用的API的申明:Decl

VB中重要的DoEvents函数

函数 有很多程序员都不了解VB中的DoEvents函数.DoEvents函数可以临时返回控制器给操作系统,并允许它完成其他可能发生的事件. 当一个程序的代码需要花很长的时间去执行,比如在一个复杂的数学计算的时候,你需要运用DoEvents函数.在你代码适当的位置调用DoEvents函数,能够改变程序响应的时间. 这里有一个例子:在VB里创建一个标准的EXE文件并放置一个CommandButton和一个TextBox,然后,将下面的代码放入CommandButton的单击事件处理程序中: Priv

vb-VB 调用fortran函数(已经生成dll),怎么实现数组的传递?

问题描述 VB 调用fortran函数(已经生成dll),怎么实现数组的传递? VB调用fortran生成的dll.传数值,我已经实现,但是传数组地址没成功, 但是用C语言就可以找到数组的首地址,但是VB就不行,请VB的高手指教 fortran 代码如下(生成dll): subroutine ComputeFwd_DC1D(Pm,nParams,AB2,nd) !DEC$ ATTRIBUTES REFERENCE::Pm,nParams,AB2,nd implicit none integer

请教VB.net创建excel自定义函数

问题描述 自己研究了好久也没成功,请教一下,怎么用vb.net创建excel自定义函数,多谢! 解决方案 解决方案二:没搞懂你的意思?你是指,给未打开的EXCEL文件创建函数?如果是这样,需要解析整个EXCEL文件格式,这难度太大了!还是,让EXCEL文件可以调用的VB函数?编个DLL或EXE执行文件,让EXCEL文件中的VBA代码调用就好了!解决方案三:你好,是这样的,在excel中可以在VBE中用VBA编写自定义函数,制作成加载宏,然后可以在整个excel中使用我现在想用vb.net实现这个

Applet调用&amp;#106avascript函数

函数 在做的的applet中用到了调用javascript程序调用方法如下:1 首先引入JSObject 包 // LiveConnect... for JavaScriptimport netscape.javascript.JSObject ;2 在调用js的地方用:try { // 创创建JSObjectJSObject.getWindow (this).eval ("javascript::window.open()")}catch (Exception ex) { 错误提示}

sql server 2005中使用apply对每行调用表值函数

server|函数 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数.表值函数作为右输入,外部表表达式作为左输入.通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出.APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表. <?XML:NAMESPACE PREFIX = O /> APPLY 有两种形式: CROSS APPLY 和 OUTER APPLY.CROSS APPLY 仅返回外部表中通过表值函数生成结果