取得存在剪貼簿的檔案名稱? |
答題得分者是:careychen
|
a0
一般會員 發表:11 回覆:29 積分:18 註冊:2003-09-12 發送簡訊給我 |
取得copy到簡貼簿的檔案名稱
procedure TForm1.Button3Click(Sender: TObject); var len,ftype:integer; tmp: string; myData: THandle; myDataPtr: Pointer; myDataLen: integer; pFormatName: AnsiString; begin try Clipboard.Open; try ftype := EnumClipboardFormats(0); while (ftype>0) do begin SetLength(pFormatName,255); len:=GetClipboardFormatName(ftype,@pFormatName[1],255); setLength(pFormatName,len); if UpperCase(pFormatName)='FILENAME' then begin myData := GetClipboardData(ftype); if myData <> 0 then begin myDataPtr := GlobalLock(myData); if myDataPtr <> nil then try myDataLen := GlobalSize(myData); if myDataLen>0 then begin SetLength(tmp,myDataLen); Move(myDataPtr^,tmp[1],myDataLen); if copy(tmp,length(tmp),1)=#0 then SetLength(tmp,length(tmp)-1); Showmessage(tmp); SetLength(tmp,0); end; finally GlobalUnlock(myData); end; end; end; ftype := EnumClipboardFormats(ftype); end; finally Clipboard.Close; end; finally end; 英文檔名沒問題 遇到中文就會少字 不知道有無解法? |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
Hi, 我把程式稍微修正了一下,就可以了
修正的地方 tmp String ==> WideString FILENAME ==> FILENAMEW SetLength(...) ==> 增加 div 2 (因為 Unicode 的字增加兩倍的長度,所以要除回來) [code delphi] procedure TForm1.Button1Click(Sender: TObject); var len,ftype:integer; tmp: WideString; myData: THandle; myDataPtr: Pointer; myDataLen: integer; pFormatName: AnsiString; begin Clipboard.Open; try ftype := EnumClipboardFormats(0); while (ftype>0) do begin SetLength(pFormatName,255); len := GetClipboardFormatName(ftype,@pFormatName[1],255); setLength(pFormatName,len); if UpperCase(pFormatName) = 'FILENAMEW' then begin myData := GetClipboardData(ftype); if myData <> 0 then begin myDataPtr := GlobalLock(myData); if myDataPtr <> nil then try myDataLen := GlobalSize(myData); if myDataLen>0 then begin SetLength(tmp,myDataLen div 2); Move(myDataPtr^,tmp[1],myDataLen); //if copy(tmp,length(tmp) div 2,1)=#0 then // SetLength(tmp,(length(tmp) div 2)-1); Showmessage(tmp); SetLength(tmp,0); end; finally GlobalUnlock(myData); end; end; end; ftype := EnumClipboardFormats(ftype); end; finally Clipboard.Close; end; end; [/code]
------
價值的展現,來自於你用哪一個角度來看待它!! |
a0
一般會員 發表:11 回覆:29 積分:18 註冊:2003-09-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |