检测并转换屏幕分辨率、语音引擎的使用(50分)

  • 主题发起人 主题发起人 hehe2004
  • 开始时间 开始时间
H

hehe2004

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手好?有两个问题请教:

1、如何在程序启动时检测当前屏幕分辨率并强制转换到指定的分辨率?

2、使用MS语音引擎,在简单的程序中能用一切正常,而在一个集文件操作、注册表操作、硬件检测、WAV文件播放及其它一些操作于一体的大程序中,总出现“大红叉+尚未调用CoInitialize。”的错误提示,而取消语音引擎的引用,程序便正常了。
在线结贴。
 
我很穷(就乘174分了),但我很真诚,希望好心朋友帮帮我.

各位都是高人,也是忙人,抽空看一帮个忙吧.
 
这个问题学不会,我会睡不着的,高手朋友,帮帮忙吧.
 
在线等,朋友们,看看吧,帮我解决第一个问题也行.
 
procedure TForm1.FormCreate(Sender: TObject);
var
devmode:tDevicemode;
begin
if screen.width<>orignwidth then
begin
if EnumDisplaySettings(nil,0,devmode) then
begin
devmode.dmfields:=dm_pelswidth OR dm_pelsheight ;
devmode.dmpelswidth:=orignwidth; {宽度}
devmode.dmpelsheight:=orignheight;{高度}
ChangeDisplaySettings(devmode,0); {更改设置}
end;
end;
end;
 
先谢谢xuhao1,等等结分.
 
我试了,太好了,但刷新频率没上去,屏幕抖动的很历害,再问一下xuhao1,怎么能改动刷新频率?
 
各位能再看看吗?刷新率和第二个问题能帮我解决一下吗?
 
再顶一下,希望能有人帮我.
 
我还在等.
 
各们都是高人,也是忙人,抽空看一帮个忙吧.
 
估计今晚是等不到答案了.
 
再顶一下,希望个位朋友能帮一下.
 
{************************用于改变显示器的分辨率****************************}
function TSplashFrm.DynamicResolution(AScreenWidth, AScreenHeight, AFrequency: Word): Bool;
begin
Result:=EnumDisplaySettings(nil,0,lpDevMode);
if Result then
begin
lpDevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY;
lpDevMode.dmPelsWidth:=AScreenWidth;
lpDevMode.dmPelsHeight:=AScreenHeight;
lpDevMode.dmDisplayFrequency:=AFrequency;
Result:=ChangeDisplaySettings(lpDevMode,0)=DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure TSplashFrm.FormCreate(Sender: TObject);
begin
{********************刷新显示器的分辨率为1024*768**************************}
oldScreenWidth:=Screen.Width;
oldScreenHeight:=Screen.Height;
if Screen.Width<>1024 then
DynamicResolution(1024,768,85);
end;
 
"大红叉+尚未调用CoInitialize"
这个我在用dll调用“数据源连接属性”的时候也发生了,不知是何故,正常的exe就没有问题。
 
多人接受答案了。
 
后退
顶部