delphi打开文件的各种方法?

delphi打开文件的各种方法?,第1张

第一种方法,使用SelectDirectory 函数 ,在ShellApi中

procedure TForm2.BtSelectPathClick(Sender: TObject)

var

strCaption,strDirectory:String

wstrRoot:WideString

begin

strCaption:='这是浏览文件夹的说明文字,可以根据需要进行书写。'

+#13#10+'一般二行文字就满了。'

//该参数是浏览文件夹窗口的显示说明部分

wstrRoot:=''

//这个参数表示所显示的浏览文件夹窗口中的根目录,默认或空表示“我的电脑”。

SelectDirectory(strCaption,wstrRoot,strDirectory)

EdLocalPath.Text:=strDirectory

end

第二种方法

要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。

代码如下:(以下两个函数定义需要键竖握在uses中引入两个单元ShlObj,Windows)

function BrowseCallbackProc(Wnd: HWNDuMsg: UINTlParam, lpData: LPARAM): Integer stdcall

begin

case uMsg of

BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData)

end

Result := 0

end

function BrowsFolder(const Folder: string): string

var

TitleName: string

lpItemID: PItemIDList

BrowseInfo: TBrowseInfo

DisplayName: array[0..MAX_PATH] of char

TempPath: array[0..MAX_PATH] of char

begin

Result := Folder

FillChar(BrowseInfo, sizeof(TBrowseInfo), #0)

BrowseInfo.hwndOwner := GetActiveWindow

BrowseInfo.pszDisplayName := @DisplayName

TitleName := '请选择一个目录'

BrowseInfo.lpszTitle := PChar(TitleName)

BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS

BrowseInfo.lpfn := BrowseCallbackProc

BrowseInfo.lParam := Integer(PChar(Folder))

lpItemID := SHBrowseForFolder(BrowseInfo)

if Assigned(lpItemId) then

begin

SHGetPathFromIDList(lpItemID, TempPath)

GlobalFreePtr(lpItemID)

Result := string(TempPath)

end

else

Result:=''

end

函数稿庆BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。

BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数纤消。在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。

用文件关联来实现呀!比如安装了office后,后缀是.doc的文件会和word关联在一起,双击这个文件,就会用word来打开。如果想自己创建关联关系,就必须从注册表入手。

给你一个例子,你改一下就可以了。

下面的代码会把后缀是.me的文件和Notepad关联在一起:

procedure TForm1.Button1Click(Sender: TObject)

var

lphKey: HKEY

sKeyName: string

sKeyValue: string

begin

sKeyName := 'ReadMeFile'

sKeyValue := '说明文档'

RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)

RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0)

sKeyName := '.me'

sKeyValue := 'ReadMeFile'

RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)

RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0)

sKeyName := 'ReadMeFile'

sKeyValue := 'c:\Win95\NotePad.exe %1'{ 注意路径 }

RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)

RegSetValue(lphKey, 'shell\open\command', REG_SZ,

pchar(sKeyValue), MAX_PATH)

end


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

原文地址: http://outofmemory.cn/yw/12449511.html

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

发表评论

登录后才能评论

评论列表(0条)

保存