在window中,要打开一个文件时,系统是怎样找到相应的程序打开这个文件的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在window中,要打开一个文件时,系统是怎样找到相应的程序打开这个文件的?相关的知识,希望对你有一定的参考价值。

打开原理是怎样的,消息机制是怎样的?有多个可选打开方式时,是怎样选择的?

系统在注册表HKEY_CLASSES_ROOT项下,将文件格式与相应程序关联,也就是我们在安装软件时最后一步,常常会有个关联文件类型选项。
有多少打开方式,取决于安装了多少个相应软件,比如MP3文件,安装了千千,酷我,暴风。那么这几个就是可选用的程序。另外还有手动打开方式的。
更深层的机制,你可以通过了解windows内核或原理来了解。89801860 仁兄说的更详细。
参考技术A 已扩展名为doc的word文件为例
在注册表的HKEY_CLASSES_ROOT的根目录下找到
*键 再再*键值下 找到.doc 打开后我们找到shellex下的一长串英文字符
84F66100-FF7C-4fb4-B0C0-02CD7FB668FE
这个叫做windows的类型库 然后在CLSID键值下面找到
84F66100-FF7C-4fb4-B0C0-02CD7FB668FE
下面有
InprocHandler32
LocalServer32
两个键值

InprocHandler32 ole32.dll 需要用到那个dll
LocalServer32 C:\PROGRA~1\MICROS~3\Office12\WINWORD.EXE 指示需要用什么程式打开

这时我所知的 描述得不好本回答被提问者采纳

js中怎样设置在窗口一打开时就限定窗口大小?

js中怎样设置在窗口一打开时就限定窗口大小?
不是楼下的这个,我要的是文件自身的效果。就是此文件被一打开就是固定大小的,不是在链接中设置被启动的窗口。也就是不依赖其它文件
我已经做出来,但是效果不好
<script>
window.moveTo(300, 100);//移动窗口
window.resizeTo(400, 500);//改变大小
</script>
希望高手能设置下不显示状态栏,标题还有不能最大化什么的,我不熟悉window这个对象

南无阿弥陀佛在下祝福回答我问题的全部人(包括你们的家人)永远开心,身体安康

1、使用window.open()

function openwindow(aa)


return window.open(aa,'newindow','height=600,width=900,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');


//调用方法
openwindow("index.html");

2、使用window.showModalDialog()
function show(WINwidth, WINheight)
showx = event.screenX - event.offsetX - 4 - WINwidth ; // + deltaX;
showy = event.screenY - event.offsetY + 18; // + deltaY;
newWINwidth = WINwidth + 4 + 18;
var features =
'dialogWidth:' + newWINwidth + 'px;' +
'dialogHeight:' + WINheight + 'px;' +
'dialogLeft:' + showx + 'px;' +
'dialogTop:' + showy + 'px;' +
'directories:no;
localtion:no;
menubar:no;
status=no;
toolbar=no;
scrollbars:no;
Resizeable=no';
var endtarget = "弹出页面.htm";
window.showModalDialog(endtarget, " ", features);


window.showModalDialog
基本介绍:showModalDialog() (IE 4+ 支持)showModelessDialog() (IE 5+ 支持)window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框(就是弹出这个窗口后,父窗口是不可选的)。window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框(就是弹出这个窗口后,父窗口仍然可选)。使用方法:vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])参数说明:sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。sFeatures--可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
2.dialogWidth: 对话框宽度。
3.dialogLeft: 离屏幕左的距离。
4.dialogTop: 离屏幕上的距离。
5.center: yes | no | 1 | 0 :窗口是否居中,默认yes,但仍可以指定高度和宽度。
6.help: yes | no | 1 | 0 :是否显示帮助按钮,默认yes。
7.resizable: yes | no | 1 | 0 [IE5+]:是否可被改变大小。默认no。
8.status: yes | no | 1 | 0 [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。

9.scroll: yes | no | 1 | 0 | on | off :指明对话框是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。10.dialogHide: yes | no | 1 | 0 | on | off :在打印或者打印预览时对话框是否隐藏。默认为no。
11.edge: sunken | raised :指明对话框的边框样式。默认为raised。
12.unadorned: yes | no | 1 | 0 | on | off :默认为no。参数传递:1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

test.htm

2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

test.htm
参考技术A

1、使用window.open()

function openwindow(aa)

    return window.open(aa,'newindow','height=600,width=900,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');
    

//调用方法
openwindow("index.html");

2、使用window.showModalDialog()

function show(WINwidth, WINheight) 
    showx = event.screenX - event.offsetX - 4 - WINwidth ; // + deltaX;
  showy = event.screenY - event.offsetY + 18; // + deltaY;
  newWINwidth = WINwidth + 4 + 18;
  var features =
    'dialogWidth:'  + newWINwidth  + 'px;' +
  'dialogHeight:' + WINheight + 'px;' +
  'dialogLeft:'   + showx     + 'px;' +
  'dialogTop:'    + showy     + 'px;' +
  'directories:no; 
  localtion:no; 
  menubar:no; 
  status=no; 
  toolbar=no;
  scrollbars:no;
  Resizeable=no';
    var endtarget = "弹出页面.htm";
    window.showModalDialog(endtarget, " ", features);

<!--调用-->
<input name="image" type=image onClick="show(230, 35);return false;" src="../../代替按扭的图片.gif" alt="鼠标经过显示的文字" width="16" height="16" >



window.showModalDialog

基本介绍:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框(就是弹出这个窗口后,父窗口是不可选的)。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框(就是弹出这个窗口后,父窗口仍然可选)。


使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

参数说明:
sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures--可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。


1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。

2.dialogWidth: 对话框宽度。

3.dialogLeft: 离屏幕左的距离。

4.dialogTop: 离屏幕上的距离。

5.center: yes | no | 1 | 0 :窗口是否居中,默认yes,但仍可以指定高度和宽度。

6.help: yes | no | 1 | 0 :是否显示帮助按钮,默认yes。

7.resizable: yes | no | 1 | 0 [IE5+]:是否可被改变大小。默认no。

8.status: yes | no | 1 | 0 [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。


9.scroll: yes | no | 1 | 0 | on | off :指明对话框是否显示滚动条。默认为yes。

下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10.dialogHide: yes | no | 1 | 0 | on | off :在打印或者打印预览时对话框是否隐藏。默认为no。

11.edge: sunken | raised :指明对话框的边框样式。默认为raised。

12.unadorned: yes | no | 1 | 0 | on | off :默认为no。

参数传递:
1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

<script>
var obj = new Object();
obj.name="ttop";
window.showModalDialog("test.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>


test.htm

<script>
var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)
</script>



2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

<script>
str=window.showModalDialog("test.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>


test.htm

<script>
window.returnValue="qifei123";
</script>

参考技术B <a href="javascript:window.showModalDialog('abc.htm', 'abc','dialogWidth:100px;dialogHeight:100px;help:no;scroll:no;status:no');">打开</a>

看了你补充,查了下Dhtml手册.没有你要的功能..
不过,我们可以变通.

写了一个代码:

<script>
function GetQueryString(name)

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;

window.onload=function()
if(!GetQueryString("aa"))newWin =window.open(window.location.href+"?aa=x",'newWin','height=200,width=400,top=200,left=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
window.opener=null;
window.close();


</script> 123456

以是内容另存为xx.html

要是回答的内容有问题,或认为不妥,请发送百度消息给我,消息内容加上本页网址哦。。

·

PS:知道吗?你的补充的后面的内容很好,就因为这个,我才帮你写代码的....本回答被提问者采纳

以上是关于在window中,要打开一个文件时,系统是怎样找到相应的程序打开这个文件的?的主要内容,如果未能解决你的问题,请参考以下文章

windows系统下怎样开启php的 php

win10系统的管理工具在哪儿,怎样找到并打开

dmp是啥文件

win10怎样清除系统镜像备份

Windows系统怎样配置PHP环境

怎样在Windows系统中安装SNMP来监控服务器