업데이트 :이 문제가 해결되었습니다.Windows Server 2008/Vista 64 비트 서비스에서 클립 보드 복사 - 붙여 넣기가 작동하지 않습니다.
여기에 솔루션에 대해 읽을 수 있습니다 : Creating a process in a non-zero session from a service in windows-2008-server?
감사합니다 모두!
안녕
,나는 Word 문서에서 이미지를 추출하기 (델파이) 클립 보드 API를 사용하는 것을 시도하고있다. Windows XP/2003에서는 제 코드가 정상적으로 작동하지만 Windows 2008에서는 64 비트가 작동하지 않습니다. win 2008에서 Clipboard.Formats가 비어 있으며 형식이 포함되어 있지 않다는 오류가 표시됩니다.
이미지가 클립 보드에 복사 된 것처럼 보이지만 (클립 보드에서 Word로 볼 수 있음) 클립 보드에 어떤 형식으로 요청했는지에 관계없이 형식이 없다는 메시지가 나타납니다.
어떻게하면 2008/Vista에서 프로그래밍 방식으로 클립 보드에 액세스 할 수 있습니까?
:이 내가 클립 보드로 이미지를 복사하려고하는 방법이다 : 나는 2008 64 비트 알고있는 것과 , 그것은 보안 문제가 될 수도 ... 여기
는 코드입니다W.ActiveDocument.InlineShapes.Item(1).Select; // W is a word ole object
W.Selection.Copy;
그리고이 방법을 붙여 넣으려고합니다. 사전에
Clipboard.Open;
Write2DebugFile('FormatCount = ' + IntToStr(Clipboard.FormatCount)); // FormatCount=0
For JJ := 1 to Clipboard.FormatCount Do
Write2DebugFile('#'+ IntToStr(JJ) + ':' + IntToStr(Clipboard.Formats[JJ]));
If (Clipboard.HasFormat(CF_BITMAP)) or
(Clipboard.HasFormat(CF_PICTURE)) or
(Clipboard.HasFormat(CF_METAFILEPICT)) then // all HasFormat calls returns false.
Begin
Jpeg := TJPEGImage.Create;
Bitmap := TBitmap.Create;
Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Jpeg.Assign(Bitmap);
Jpeg.SaveToFile(JpgFileN);
try Jpeg.Free; except; end;
ResizeImage(JpgFileN,750);
Write2DebugFile('Saving ' + JpgFileN);
End
else Write2DebugFile('Doesnt have the right format');
감사합니다, Itay
델파이 버전? – ulrichb
내 생각 엔 Word가 32 비트 Delphi 앱이 액세스 할 수없는 64 비트 메모리를 사용하여 데이터를 저장하고있는 것 같습니다. –
또 다른 문제는 내가 서비스로 실행하고 있기 때문일 수 있습니다 ... –