这应该不奇怪吧。
SYBASE (SAP)的 POWERBUILDER 俺看到还有人在用。
留着 ODBC 组件什么的大家应该庆幸。
这和“套壳”没任何关系,只能说明微软对向下兼容的死硬坚持是业界首屈一指的。
你说32位的Win10里面有Win3.x的组件没问题。NTVDM本身就包含一个魔改的DOS5.0和Win16运行时环境,DOS的行编辑器EDLIN、最古老的调试器DEBUG都还在呢。
不过,Win11没有32位版本了,你所看到的对话框比起Win3.1的残留,严格来说应该是NT3.51的残留,Win3.1版本右下角没有“网络...”选项。
这才是Win3.1的打开文件通用对话框的样子。
用过Win32编程的都知道,有一系列来自comdlg32.dll的通用对话框,其中GetOpenFileName是打开文件的对话框。
GetOpenFileName需要传入一个OPENFILENAME结构体,里面有一个Flags变量。如果其中OFN_EXPLORER位设为0,使用OFN_ENABLEHOOK等flag来允许hook函数,且lpfnHook变量传入一个返回FALSE的hook函数指针,就能打开旧式打开文件对话框了。
Windows continues to support the old-style Open dialog box for applications that want to maintain a user-interface consistent with the old-style user-interface. To display the old-style Open dialog box, enable an OFNHookProcOldStyle hook procedure and ensure that the OFN_EXPLORER flag is not set.
关于旧式的通用对话框,可以参考这里。
套壳也被重新定义了么?
套壳是说把人家的东西拿来包装一下用自己的名义发布,比如浏览器用人家的引擎,芯片把人家的商标打磨掉贴自己的商标。你拿个外观是Windows 3.1组件出来说套壳,那玩意本来就是微软的好吧?有人说因为某个新车型的汽车轮胎跟旧的车型是同一个型号所以新车型是旧车型套了个壳么?
而且你把ODBC这个界面删掉,顶多一些要用到ODBC数据库的古董企业数据库软件可能不能跑(其实这些软件的安装程序自己去注册表里写入ODBC配置而不是依赖用户手动输入数据库位置的话还是可以跑,比如How can I create an ODBC data source on Windows without using ODBC Administrator?),Windows自己并不会受到任何影响。这个组件在Windows里连壳都没进去,相对于汽车来说大概是音响上的手机座这种级别,要说套壳也太能扯了吧?
界面不大改是因为用户太少,ODBC之后微软主推的数据库访问技术已经换了好多代,现在我写数据库程序都是Entity Framework,ODBC程序我已经二十多年没写过了……底层是肯定重写过的,Vista那会用旧版不安全CRT库函数的都不能出厂,组件还是那个组件,版本肯定不是Windows 3.1的那个版本了。
这个组件真的没多大技术含量。微软真不提供这个配置界面了,随便找个刚入门的程序员,用公开的注册表信息(Registry Entries for Data Sources - ODBC API Reference),就能再写个出来,用Windows PowerShell内置的DSN管理功能也行(Add-OdbcDsn (Wdac))。