C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[43096] 하드웨어 가속제어
elliclaura [kiss2u] 1769 읽음    2005-12-28 15:22
동영상 캡춰 프로그램을 만들다가 보니 일부 동영상의 경우 하드웨어 가속을 꺼야만 캡춰가 되길래.
하드웨어 가속을 제어를 찾던중 델마당에서

procedure HardwareAcceleration(level: integer);
var
Reg: TRegistry;
reg_key: string;
begin
try
   Reg := TRegistry.Create;
   Reg.RootKey := HKEY_LOCAL_MACHINE;
   reg_key := '\HARDWARE\DEVICEMAP\VIDEO\';
   if reg.OpenKey(reg_key, false) then
   begin
     reg_key := reg.ReadString('\Device\Video0');
     reg_key := StringReplace(reg_key, '\Registry\Machine', '', [rfReplaceAll]);
     if reg.OpenKey(reg_key, false) then
     begin
       if level = 0 then reg.DeleteValue('Acceleration.Level')
       else reg.WriteInteger('Acceleration.Level', level);
     end;
   end;
finally
   reg.CloseKey;
   reg.Destroy;
   ChangeDisplaySettings( TDevMode( nil^ ), CDS_UPDATEREGISTRY );
end;
end;
===============
위와 같은 소스를 발견 해서 BCB로 포팅했습니다.
void __fastcall TForm1::HardwareAcceleration(int level)
{
      TRegistry *Reg;
      AnsiString reg_key;

      try
     {
            Reg = new TRegistry;
            Reg->RootKey = HKEY_LOCAL_MACHINE;
            reg_key = "\\HARDWARE\\DEVICEMAP\\VIDEO\\";
            if(Reg->OpenKey(reg_key, false))
           {
            reg_key = Reg->ReadString("\\Device\\Video0");
            reg_key = StringReplace(reg_key, "\\Registry\\Machine", "", (TReplaceFlags) rfReplaceAll);
    if(Reg->OpenKey(reg_key, false))
                 {
                 // 이 부분 안으로 들어 가지 않음 if(!Reg->OpenKey(reg_key, false))로 고쳐야 합니까?
                       if (level == 0)
                                       Reg->DeleteValue("Acceleration.Level");
           else
                                       Reg->WriteInteger("Acceleration.Level", level);
                 }
                      }
              }
       __finally
      {
    delete Reg;
    Reg = NULL;
    DEVMODE mode ;
    ChangeDisplaySettings(&mode, CDS_UPDATEREGISTRY );
      }
}

그런데 원하는데로 작동하질 않는군요  XP SP2에서 테스트 했습니다.
무엇이 문제인지 도움말씀 부탁 드립니다.

+ -

관련 글 리스트
43096 하드웨어 가속제어 elliclaura 1769 2005/12/28
43103     Re:하드웨어 가속제어 누군가 1092 2005/12/28
43105         Re:Re:하드웨어 가속제어 elliclaura 1041 2005/12/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.