请问,OLE控件 用SourceDoc指点的文件如果没有后缀,如何正常显示?谢谢!

mansohu 2017-02-13 09:25:44
我用OLE控件显示 word 或 Excel ,当SourceDoc指定的文件有后缀时,可以正常显示,如果没后缀,即使Class设置为“Word.EXE",也显示不出文档的内容,只显示文件的名称,请问,如何用OLE控件显示没有后缀名的文件?
谢谢!
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-02-20
  • 打赏
  • 举报
回复
引用 3 楼 xiaoyao961 的回复:
如果你不知道什么后缀,你加上也没有用,如果知道直接加上。 可以自己写一个函数检测二进制,看看前几个字节,识别文件格式。
比如:
#include <stdio.h>
struct EH {
    char e[32];
    char h[32];
} eh[29]={
    {"Windows Bitmap (bmp)"       ,                         "424D"},
    {"JPEG (jpg)"                 ,                       "FFD8FF"},
    {"MPEG (mpg)"                 ,                     "000001B3"},
    {"MPEG (mpg)"                 ,                     "000001BA"},
    {"Outlook (pst)"              ,                     "2142444E"},
    {"Real Media (rm)"            ,                     "2E524D46"},
    {"Real Audio (ram)"           ,                     "2E7261FD"},
    {"Adobe Photoshop (psd)"      ,                     "38425053"},
    {"CAD (dwg)"                  ,                     "41433130"},
    {"AVI (avi)"                  ,                     "41564920"},
    {"GIF (gif)"                  ,                     "47494638"},
    {"TIFF (tif)"                 ,                     "49492A00"},
    {"MIDI (mid)"                 ,                     "4D546864"},
    {"ZIP Archive (zip)"          ,                     "504B0304"},
    {"RAR Archive (rar)"          ,                     "52617221"},
    {"Wave (wav)"                 ,                     "57415645"},
    {"Quicktime (mov)"            ,                     "6D6F6F76"},
    {"PNG (png)"                  ,                     "89504E47"},
    {"Quicken (qdf)"              ,                     "AC9EBD8F"},
    {"MS Word/Excel (xls.or.doc)" ,                     "D0CF11E0"},
    {"Windows Password (pwl)"     ,                     "E3828596"},
    {"WordPerfect (wpd)"          ,                     "FF575043"},
    {"XML (xml)"                  ,                   "3C3F786D6C"},
    {"HTML (html)"                ,                   "68746D6C3E"},
    {"Rich Text Format (rtf)"     ,                   "7B5C727466"},
    {"Adobe Acrobat (pdf)"        ,               "255044462D312E"},
    {"Windows Media (asf)"        ,             "3026B2758E66CF11"},
    {"Outlook Express (dbx)"      ,             "CFAD12FEC5FD746F"},
    {"MS Access (mdb)"            ,         "5374616E64617264204A"},
};
FILE *f;
static char s[32];
int i,j,c;
int main(int argc,char **argv) {
    if (argc<2 || argc>2) {
        fprintf(stderr,"GuessFileExt according to head bytes.\nUsage: %s filename\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"rb");
    if (NULL==f) {
        fprintf(stderr,"Can not open file %s\n",argv[1]);
        return 2;
    }
    for (i=0;i<14;i++) {
        c=fgetc(f);
        if (c==EOF) break;//
        sprintf(s+i*2,"%2X",(unsigned char)c);
        for (j=0;j<29;j++) {
            if (0==strcmp(s,eh[j].h)) {
                printf("%s\n",eh[j].e);
                fclose(f);
                return 0;
            }
        }
    }
    printf("Unknown\n");
    fclose(f);
    return 3;
}
  • 打赏
  • 举报
回复
如果你不知道什么后缀,你加上也没有用,如果知道直接加上。 可以自己写一个函数检测二进制,看看前几个字节,识别文件格式。
mansohu 2017-02-13
  • 打赏
  • 举报
回复
引用 1 楼 xiaoyao961 的回复:
这简单一件事情,你把后缀加上去不就完事啦,4个字符的事情。
是这样的,我们有大量文件是没有后缀的,但有数据可以知道每个文件的格式,所以可以设置Class,还请指导,谢谢!
  • 打赏
  • 举报
回复
这简单一件事情,你把后缀加上去不就完事啦,4个字符的事情。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧