精华内容
下载资源
问答
  • 用Python打开文件程序

    千次阅读 多人点赞 2020-05-18 18:45:41
    比如用记事本打开txt文档,用图片浏览器打开图片,或者直接打开一个软件,在网上找了好就才发现,os模块里有个命令os.startfile,函数作用是使用已关联的应用程序打开文件。下面给大家演示下: 基本用法 import os ...

    ​ 初学Python的小伙伴们,不知道有没有遇到我这样的困惑,如何用Python来控制电脑用自带的程序打开一个文件,比如用记事本打开txt文档,用图片浏览器打开图片,或者直接打开一个软件,在网上找了好久才发现,os模块里有个命令os.startfile,函数作用是使用已关联的应用程序打开文件。下面给大家演示下:

    基本用法

    import os
    
    #打开图片
    os.startfile(r'D:\新建.png')
    #打开txt文件
    os.startfile(r'D:\新建文本文档.txt')
    #打开exe文件
    os.startfile(r'D:\360DrvMgrInstaller_beta.exe')
    """startfile命令里只需输入文件的路径即可"""
    

    进阶用法

    官方解释os.startfile函数有两个参数

    os.startfile(path[, operation])

    path指的是文件路径,有意思的是operation参数,

    • operation 未指定或指定为 'open' 时,通过扩展名相关联的应用程序(如果有)打开文件。

    • 当指定另一个 operation 时,它必须是一个“命令动词” (“command verb”),该词指定对文件执行的操作。文档中的常用动词有 'print''edit' (用于文件),以及 'explore''find' (用于目录)。

    上面是官方解释的, 我试了下,最好玩的就是print,可以直接打印图片或文档,office文件会直接用默认的打印机打印,没有提示操作,图片会弹出打印窗体,小伙伴们,可以自己试一试哦。

    import os
    
    #直接打印
    os.startfile(r'D:\新建.png','print')
    os.startfile(r'D:\BOM\20.xls','print')
    #find会弹出一个窗口,让你输入要搜索的内容
    os.startfile(r'D:\C' ,'find')
    
    
    
    展开全文
  • 背景 最近想实现类似于在软件中点击工具栏的Help,软件会自动根据文件的后缀来打开软件的手册或帮助...那么问题可以转化为: 如何程序实现根据文件后缀来判断调用电脑上的默认程序打开文件呢?其实也就是模拟了...

    背景

    最近想实现类似于在软件中点击工具栏的Help,软件会自动根据文件的后缀来打开软件的手册或帮助文档的功能,比如:软件的手册是Manual.pdf,那么单击Help中对应的项,则Manual.pdf文件会被电脑上默认的pdf文件阅读器(e.g. Foxit Reader)打开以供User浏览。那么问题可以转化为: 如何程序实现根据文件后缀来判断调用电脑上的默认程序来打开文件呢?其实也就是模拟了鼠标的双击事件。

    关键词: 默认程序 打开文件 鼠标双击事件模拟 文件后缀 外部程序调用 注册表,

    注: 以下涉及的代码均是在Qt5.10实现

    思路与方法

    1、对于系统配置好或者在环境变量配置好的程序(e.g., notepad.exe, mspain.exe),可以直接调用你已知的程序来打开文件,比如你想打开author.txt文件,而你知道这个文件可以notepad.exe程序打开,于是你可以直接以下的语句打开:

    QProcess myProcess; // QProcess是Qt里面用来调用外部程序的类,记得 #include <QProcess>, 这个类的具体用法请查看Qt的帮助文档

    myProcess.start("notepad.exe F:\\author.txt"); // 我把author.txt文件放在F盘了

    但是现在大部分人安装软件都不会默认安装,更不会配置什么环境变量,比如像我的Foxit Reader就是安装在D:\Program Files\Foxit Reader下面的,那么按上面的方式则没法调用Foxit Reader来打开pdf文件:

    myProcess.start("FoxitReader.exe F:\\author.pdf”);

    这个时候失败的原因主要是因为程序不知道FoxitReader.exe放在哪个目录下,既然知道原因,那把目录加上就可以了:

    myProcess.start("D:\\Program\" \"Files\\Foxit\" \"Reader\\FoxitReader.exe F:\\author.pdf"); // 注意路径包含空格的话需要转换一下

    很显然,这种方法是极其不灵活的,对于不同的文件类型,我需要不停的改程序名称和安装路径。

    2、我们知道,当一个文件可以被多种程序(比如pdf文件可以被Foxit Reader和Adobe Acrobat Reader打开)打开查看时,我们是可以设置默认的打开程序,那么这个时候我就会在想,这种设置是不是会被保存在系统的某个文件里面?鼠标双击文件时,电脑是不是也是根据文件后缀在某个系统文件中找到跟这种文件后缀相关的信息(比如,对应的打开程序,打开程序的安装位置等等),然后根据获得的信息来打开文件的呢?这个时候很自然的让我想到了注册表,于是在网上搜索,果然找到跟这个问题密切相关的文章(https://blog.csdn.net/qq2399431200/article/details/17957033), 下面我简单说说我的理解。

    1) 文件拓展名 -> 对应程序启动路径的映射关系存放在HKEY_CLASS_ROOT根键中。我理解为索引关键词,就如我们的身份证号码。

    2)打开注册表(WIN+R -> 输入regedit -> Enter),定位到HKEY_CLASS_ROOT根键,你会发现其下有很多的键,每个键对应一个像文件夹的图标,所以你可以把注册表当成一个文件系统,通过单击鼠标来找到你想要的。比如找后缀为.pdf相关的启动程序:

    ① 在HKEY_CLASS_ROOT中找到.pdf这个键,点击,右侧会显示与之关联的数据,截图如下:

    这个时候默认这个键所对应的数据FoxitReader.Document(你的可能不是这个值)是下一步定位的键

    ②根据①找到的键(FoxitReader.Document),继续在HKEY_CLASS_ROOT下找,找到后展开,进一步找FoxitReader.Document下的shell,展开shell再找open,展开open点击command,你会发现右侧与之对应的数据,其默认所对应的是"D:\PROGRAM FILES\FOXIT READER\FOXITREADER.EXE" "%1",我推测这一串字符就是shell下用Foxit Reader打开文件的命令,而后面的%1是占位符,其意思是在你双击pdf文件时,%1被替换成你所单击的文件名,然后执行命令打开文件。这过程的截图如下:

    在程序中是没有鼠标操作的,只能通过上面说的键值在注册表中地位,找到相应的路径。在Qt中操作注册表的类是QSettings类,找到打开.pdf后缀的默认程序路径以及打开文件的代码段如下:

    QString suffix=".pdf";

    QString filename="author";

    QString suffixKey;

    QString exePath;

    QSettings sufKeySet("HKEY_CLASSES_ROOT\\"+suffix,QSettings::NativeFormat);

    suffixKey=sufKeySet.value(".").toString(); // suffixKey的内容为FoxitReader.Document

    QSettings exePathSet("HKEY_CLASSES_ROOT\\"+suffixKey+"\\shell\\open\\command",QSettings::NativeFormat);

    exePath=exePathSet.value(".").toString(); // exePath的内容为 "D:\PROGRAM FILES\FOXIT READER\FOXITREADER.EXE" "%1"

    // 下面需要对提取出来的exePath需要进行处理,因为里面包含有空格、引号、%等

    exePath=exePath.left(exePath.lastIndexOf(QString(".exe"),-1,Qt::CaseInsensitive)+4);

    // exePath的内容为 "D:\PROGRAM FILES\FOXIT READER\FOXITREADER.EXE

    if(exePath.at(0)=="\"")

    exePath.remove(0,1); // 去掉前面的引号

    exePath.replace(" ","\" \""); // 处理空格,这里也提醒大家安装或存文件的文件夹最后不要带空格

    exePath.append(" "+filename+suffix);

    QProcess *myProcess=new QProcess;

    myProcess->start(exePath); // 至此,文件应该能成功打开了

    由于整个过程对于不同的文件后缀都是一样,其他的查找关键字也是固定的,所以其可以用于不同的文件后缀的文件打开过程,相对方法1有了很大的改进。但是这个过程过于繁琐,需要找程序路径,找到后还需要处理字符段,无法保证对于其他的文件后缀的字符段处理过程也是这样。既然那么多的软件都有打开帮助文档的功能,那么就应该会有更安全的方式,到底是什么样的呢?

    3、多亏我大师兄的提醒与指导,他说第2中方法更像是运行程序计算的调用,而根据文件后缀用电脑默认程序打开文件浏览,这个类似模拟鼠标的双击事件,Windows下应该会提供相应的API。也就这样的,大师兄给我指了一条路。经过在网上查找,找到了密切相关的一篇文章(http://blog.51cto.com/hhuayuan/1122469),有了这篇文章,感觉世界都敞亮了,一行代码就实现上面的操作:

    ShellExecuteW(NULL,QString("open").toStdWString().c_str(),QString("F:\\author.pdf").toStdWString().c_str(),NULL,NULL,SW_SHOW); // 打开F盘下的author.pdf文件, 你想打开什么文件,直接替换就可以,就是别忘了路径

     

    本人水平有限,有谬误之处还请谅解并指出,如果有其他的想法也欢迎交流。

    展开全文
  • 使用 ShellExecute 打开文件或执行程序 可以使用 ShellExecute 打开文件或执行程序。 原型: HINSTANCE ShellExecute( _In_opt_ HWND hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL _In_opt...

    使用 ShellExecute 打开文件或执行程序

    可以使用 ShellExecute 打开文件或执行程序。

    原型:

    HINSTANCE ShellExecute(
      _In_opt_ HWND    hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
      _In_opt_ LPCTSTR lpOperation,//操作
      _In_     LPCTSTR lpFile,//要打开的文件名、执行的程序名、浏览的文件夹等。
      _In_opt_ LPCTSTR lpParameters,//可执行程序的参数,否则为 NULL
      _In_opt_ LPCTSTR lpDirectory,//默认目录
      _In_     INT     nShowCmd//显示类型
    );

    lpOperation 是一个字符串,通常为:

    • edit 用编辑器打开 lpFile 指定的文档,如果 lpFile 不是文档,则会失败
    • explore 浏览 lpFile 指定的文件夹
    • find 搜索 lpDirectory 指定的目录
    • open 打开 lpFile 文件,lpFile 可以是文件或文件夹
    • print 打印 lpFile,如果 lpFile 不是文档,则函数失败
    • properties 显示属性
    • runas 请求以管理员权限运行,比如以管理员权限运行某个exe
    • NULL 执行默认”open”动作

    nShowCmd 执行操作之后程序显示类型,指定该参数后运行起来的程序不一定能按照指定参数显示,只是通知程序的显示状态。类型如下:

    • SW_HIDE 隐藏窗口,活动状态给令一个窗口
    • SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
    • SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
    • SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
    • SW_SHOWMAXIMIZED 最大化窗口,并将其激活
    • SW_SHOWMINIMIZED 最小化窗口,并将其激活
    • SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
    • SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
    • SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
    • SW_SHOWNORMAL 与SW_RESTORE相同

    返回值:
    返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。错误如下:

    • 0 系统内存或资源不足
    • ERROR_FILE_NOT_FOUND 找不到指定的文件
    • ERROR_PATH_NOT_FOUND 找不到指定路径
    • ERROR_BAD_FORMAT .exe文件无效
    • SE_ERR_ACCESSDENIED 拒绝访问指定文件
    • SE_ERR_ASSOCINCOMPLETE 文件名关联无效或不完整
    • SE_ERR_DDEBUSY DDE事务正在处理,DDE事务无法完成
    • SE_ERR_DDEFAIL DDE事务失败
    • SE_ERR_DDETIMEOUT 请求超时,无法完成DDE事务请求
    • SE_ERR_DLLNOTFOUND 未找到指定dll
    • SE_ERR_FNF 未找到指定文件
    • SE_ERR_NOASSOC 未找到与给的文件拓展名关联的应用程序,比如打印不可打印的文件等
    • SE_ERR_OOM 内存不足,无法完成操作
    • SE_ERR_PNF 未找到指定路径
    • SE_ERR_SHARE 发生共享冲突

    怎样打开一个网页?

    假设将FileName參数设置为http:协议格式,那么该函数将打开默认浏览器并链接到指定的URL地址。

    若用户机器中安装了多个浏览器,则该函数将依据Windows 9x/NT注冊表中http协议处理程序(Protocols Handler)的设置确定启动哪个浏览器。

    如:ShellExecute(handle,L"open",L" http://www.neu.edu.cn", NULL, NULL, SW_SHOWNORMAL);ShellExecute()函数在HKEY_CLASSES_ROOT\http\shell\open\command下进行搜索。默认浏览器在注冊表HKEY_CLASSES_ROOT\.htm键下的Default设置。

    怎样激活相关程序,发送EMAIL?

    假设将FileName參数设置为mailto:协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包含Microsoft Outlook Express)或Netscape Messanger。若用户机器中安装了多个邮件客户程序,则该函数将依据Windows 9x/NT注冊表中mailto协议处理程序的设置确定启动哪个邮件客户程序。mailto:用户账号@邮件server地址?subject=邮件主题&body=邮件正文;

    如:ShellExecute(handle,L"open",L"mailto:who@mail.neu.edu.cn?subject=Hello&Body=This is a test", NULL,NULL, SW_SHOWNORMAL);

    打开新邮件窗体,并自己主动填入收件人地址、邮件主题和邮件正文。若邮件正文包含多行文本,则必须在每行文本之间增加换行转义字符%0a。ShellExecute()函数在HKEY_CLASSES_ROOT\mailto\shell\open\command下搜索。

    怎样打开一个程序?

    ShellExecute(NULL,L"open",L"notepad.exe",  L"c:\\MyLog.log", NULL, SW_SHOW );

    怎样用系统打印机打印文档?

    ShellExecute(NULL,L"print", L"c:\\abc.txt",NULL, NULL, SW_HIDE); 

    怎样用系统查找功能来查找指定文件?

    ShellExecute(NULL,L"find",L"d:\\nish",  NULL, NULL, SW_SHOW);

    怎样启动一个程序,直到它执行结束?

            SHELLEXECUTEINFO ShExecInfo = {0};
            ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
            ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
            ShExecInfo.hwnd = NULL;
            ShExecInfo.lpVerb = NULL;
            ShExecInfo.lpFile =L"c:\\MyProgram.exe";
            ShExecInfo.lpParameters = NULL;
            ShExecInfo.lpDirectory = NULL;
            ShExecInfo.nShow = SW_SHOW;
            ShExecInfo.hInstApp = NULL;
            ShellExecuteEx(&ShExecInfo);
            WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

    或:

           PROCESS_INFORMATION ProcessInfo;
           STARTUPINFO StartupInfo; //This is an [in] parameter
           ZeroMemory(&StartupInfo, sizeof(StartupInfo));
           StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
           if(CreateProcess(L"c:\\winnt\\notepad.exe", NULL, NULL,NULL,FALSE,0,NULL, NULL,&StartupInfo,&ProcessInfo))
           {
                 WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
                 CloseHandle(ProcessInfo.hThread);
                 CloseHandle(ProcessInfo.hProcess);
           }  
           else
    
                 MessageBox(NULL,L"The process could not be started",NULL,NULL);

    怎样显示文件或目录的属性?

            SHELLEXECUTEINFO ShExecInfo ={0};
            ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
            ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
            ShExecInfo.hwnd = NULL;
            ShExecInfo.lpVerb = L"properties";
            ShExecInfo.lpFile = L"c:\\"; //can be a file as well
            ShExecInfo.lpParameters = NULL;
            ShExecInfo.lpDirectory = NULL;
            ShExecInfo.nShow = SW_SHOW;
            ShExecInfo.hInstApp = NULL;
            ShellExecuteEx(&ShExecInfo);

    使用方法

        int ret = (int)ShellExecute(NULL, _T("open"), _T("Dbgview.exe"), NULL, NULL, SW_NORMAL);//打开exe
        if (ret < 32)//检测是否指定成功
            MessageBox(_T("ERROR"));
        ret = (int)ShellExecute(NULL, _T("open"), _T("help.pdf"), NULL, NULL, SW_NORMAL);//打开指定文件,将调用默认处理的程序打开
        if (ret < 32)
            MessageBox(_T("ERROR"));
        ret = (int)ShellExecute(NULL, _T("open"), _T("https://www.baidu.com"), NULL, NULL, SW_NORMAL);//打开网址
        if (ret < 32)
            MessageBox(_T("ERROR"));
        ret = (int)ShellExecute(NULL, _T("open"), _T("c:\\windows"), NULL, NULL, SW_NORMAL);//打开文件夹
        if (ret < 32)
            MessageBox(_T("ERROR"));
        ret = (int)ShellExecute(NULL, _T("runas"), _T("cmd.exe"), NULL, NULL, SW_NORMAL);//请求管理员权限打开cmd
        if (ret < 32)
            MessageBox(_T("ERROR"));

    实例:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <shellapi.h>
    
    int main(void)
    {
        test01();
    }
    
    int test01()
    {
        HINSTANCE hNewExe = ShellExecuteA(NULL, "open", "calc.exe", NULL, NULL, SW_SHOW);
    
        if ((DWORD)hNewExe <= 32)
        {
            printf("return value:%d\n", (DWORD)hNewExe);
        }
        else
        {
            printf("successed!\n");
        }
    
        printf("GetLastError: %d\n", GetLastError());
        system("pause");
        return 1;
    }
    
    展开全文
  • 用.bat文件打开程序

    千次阅读 2018-03-20 13:27:44
    用.bat文件打开程序

    .bat文件:

    执行某个程序:

    E:
    cd "E:\Tencent Files\2329416380\FileRecv\CefClient\Release\"
    @cefclient.exe --enable-system-flash

    自动创建文件夹:

    MD 1

    展开全文
  • 使用 ShellExecute 打开文件或执行程序

    千次阅读 2018-05-04 17:45:17
    点击打开原文链接使用 ShellExecute 打开文件或执行程序可以使用 ShellExecute 打开文件或执行程序。原型:HINSTANCE ShellExecute( _In_opt_ HWND hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL _...
  • 使用 ShellExecuteEx 打开文件或执行程序可以使用 ShellExecuteEx 打开文件或执行程序,与 ShellExecute 比较,ShellExecuteEx 提供了更多的控制,但是看起来使用也更复杂。 原型:BOOL ShellExecuteEx( _Inout_ ...
  • Mac命令行指定特定程序打开文件

    万次阅读 2015-09-03 22:41:52
    指定一个特定程序打开文件# 用 sublime text 打开 httpd.conf open -a /Applications/Sublime\ Text.app/ httpd.conf 如果使用频繁,还可以添加软连接sudo ln -s /Applications/Sublime\ Text.app/Contents/...
  • 1,打开WinCC自带应用程序,记事本:  打开一个空白记事本: ProgramExecute("notepad.exe"); 打开某路径下的记事本: ProgramExecute("notepad.exe E:\\test.txt"); 2,在windows上后安装的...
  • Qt打开外部程序或者文件方法

    千次阅读 2011-12-03 19:47:17
    Qt打开外部程序或者文件方法 1、打开应用程序 ...2、打开文件 QString strPath = "";//这里填写你文件的路径,有中文的话可能需要编码转换 QDesktopServices bs; bs.openUrl(QUrl(strPath));
  • Java程序打开本地文件

    千次阅读 2018-01-10 14:16:43
    使用Java程序编程,实现自动打开本地文件: final Runtime runtime = Runtime.getRuntime(); final String cmd = "rundll32 url.dll FileProtocolHandler file://D:/file.txt"; runtime.exec(cmd);
  • Linux下使用合适程序打开文件

    千次阅读 2016-02-17 10:46:17
    Linux下编写界面程序时,有时候需要打开一个文件,并不是简单的二进制方式或文本方式打开,要用当前系统中合适的一个程序打开,比如图片文件使用图片查看工具;压缩包使用归档压缩包管理工具;文本文件使用gedit等等...
  • Unity打开外部程序exe/Bat文件方案

    千次阅读 2018-07-26 23:24:21
    Unity打开外部程序exe/Bat文件方案 Unity调用外部程序/Bat文件 本文提供全流程,中文翻译。 助力完成 Unity 打开外部程序 exe / bat 文件 Unity 调用系统进程,可直接调用外部程序 Excel 进行打印操作 会直接在目标...
  • bat批处理打开文件路径或者程序

    千次阅读 2018-12-04 12:29:27
    PEM打开程序 @echo off start /min "" "D:\Program Files\Xshell\Xshell.exe" PEM设置延时时间 timeout /t 10 start /min "" "D:\Program Files\SecureCRT\SecureCRT.exe&...
  • 也可以用指定的程序打开,参数不同就能达到不同的功能,还有一个CreateProcess是创建一个进程,也可以实现打开文件,但是个人觉得在以默认程序打开文件这点功能上ShellExecute简单的多,大家都可以了解一下,但本文...
  • QT打开应用程序文件)方法

    千次阅读 2015-05-26 14:00:34
    qt打开应用程序方法
  • 程序文件下载并打开

    千次阅读 2019-04-23 15:59:22
    程序文件类型有要求,必须是符合文件类型才能打开 在服务器上简历需要下载的文件路径为 http://200.xx.1xx.47:8765/test.docx
  • C#中利用程序打开文件

    千次阅读 2009-07-18 18:19:00
    如何在程序打开文件(相当于鼠标双击该文件),这里有两种方法:(1)使用进程打开文件,使用方法如下: string fileName = ....; //文件绝对路径 使用Process类的静态方法 System.Diagnostics.Process.Start...
  • Q-Dir取消直接打开zip文件,采用系统默认程序打开zip文件在使用Q-Dir的过程中,由于Q-Dir的默认设置,是直接在窗口中打开zip格式的文件,而不是用系统默认的程序比如7-Zip打开,使用上很不方便,但是由于Q-Dir的设置...
  • C++调用默认程序打开文件

    千次阅读 2018-08-02 14:09:45
    执行ShellExecute方法: ShellExecute(nullptr, _T("open"), _T("C:\Users\lenovo\Desktop\abc.csv"), _T(""), _T(""), SW_SHOW);  
  • Linux关联文件扩展名和打开程序

    千次阅读 2017-12-06 20:31:35
    Linux关联文件扩展名和打开程序 手动为Linux关联文件扩展名与打开程序。 当Linux不认识某种扩展名的时候,需要为此扩展名创建一个MIME类型。Linux是依据MIME类型而不是扩展名来决定打开程序的。 再将此种MIME类型...
  • Visual Studio Code 打开程序文件中文乱码解决方法

    万次阅读 多人点赞 2018-11-26 09:34:57
    使用Visual Studio Code...可以通过调整打开文件的编码方式来解决Visual Studio Code打开中文乱码的问题. 操作步骤如下: 首先点击右下角当前的编码格式 ,本次实验中的编码方式为UTF-8 点击编...
  • 控制台程序使用打开文件对话框

    千次阅读 2010-05-13 10:09:00
    #include #include #include #include using namespace .../*控制台打开文件对话框,VC6.01.新建一个空的控制台程序2.Project->Setting->C/C++ ->catagory(code generation)-> using run-time library -> multithread3.
  • Python3中打开文件的方式(With open)

    万次阅读 多人点赞 2018-08-05 19:53:16
    python文件读写文件是最常见的IO操作... 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件...
  • 自己的APP调用第三方打开文件主要是使用 UIDocumentInteractionController 类 并实现 UIDocumentInteractionControllerDelegate的代理方法@interface ViewController ()<UIDocumentInteractionControllerDelegate>@...
  • 如果是Excel 2000或2003,依次选择工具/选项,将常规选项卡中忽略其他应用程序的钩去掉即可。如果是Excel2007,依次选择左上角的Office按钮 /Excel选项/高级,将常规选项中忽略使用动态数据交换(DDE)的其他应用...
  • 程序正常运行,但是无法打开.rc文件进行编辑,弹出 error RC2014:undefined keyword or keyname:TBS_NOTYFYBEFOREMOVE,可能跟slider的使用有关,求大神指点!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 125,503
精华内容 50,201
关键字:

打开文件程序