SORUN: Meta Panosu'ndaki tüm uygulamalar için görünür olmayan

Windows XP desteği sona erdi

Microsoft, Windows XP desteğini 8 Nisan 2014'te sona erdirdi. Bu değişiklik yazılım güncelleştirmelerinizi ve güvenlik seçeneklerinizi etkiledi. Bunun sizin için ne anlama geldiğini ve korunmaya nasıl devam edebileceğinizi öğrenin.

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:323530
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanlarına başvurulmaktadır:
  • System.Drawing.Imaging
  • System.Runtime.ınteropservices
Belirtiler
.NET uygulamaları panoya eklediğiniz meta dosyaları, başka uygulamalar için görünür değil.
Neden
Panoya meta dosyaları eklediğinde, .NET Framework yeni bir Pano biçimini kullandığından, bu sorun oluşur. Işletim sistemi veya Microsoft Word gibi diğer uygulamalar, bu yeni biçimi ile uyumlu değildir ve bu nedenle, yapıştıramazsınız veya resmi görüntüler.
Çözüm
Diğer uygulamaları için görünür durumda panoya meta dosyası eklemek için <a0></a0>, CF_ENHMETAFILE biçimini kullanmalısınız. Bu biçim için destek, DataFormats.EnhancedMetafile yöntemiyle DataObject sınıfı aracılığıyla sağlanır. Ne yazık ki, sınırlamalar geçerli uygulamasında .NET Framework'ün bunu uygun bir çözüm alınmasını. Bu nedenle, bu sorunu gidermek için Win32 Pano uygulama programlama arabirimleri (Apı) ile birlikte çalışabilirlik elde gerekir.

Izleyen kod örnekleri, diğer uygulamaları için görünür olacak biçimde meta dosyası panoya nasıl gösterilmektedir.

Microsoft Visual Basic .NET örnek

Imports System.Drawing.ImagingImports System.Runtime.InteropServicesPublic Class ClipboardMetafileHelper    <DllImport("user32.dll", EntryPoint:="OpenClipboard", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function OpenClipboard(ByVal hWnd As IntPtr) As Boolean    End Function    <DllImport("user32.dll", EntryPoint:="EmptyClipboard", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function EmptyClipboard() As Boolean    End Function    <DllImport("user32.dll", EntryPoint:="SetClipboardData", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function SetClipboardData(ByVal uFormat As Integer, ByVal hWnd As IntPtr) As IntPtr    End Function    <DllImport("user32.dll", EntryPoint:="CloseClipboard", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function CloseClipboard() As Boolean    End Function    <DllImport("gdi32.dll", EntryPoint:="CopyEnhMetaFileA", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function CopyEnhMetaFile(ByVal hemfSrc As IntPtr, ByVal hNULL As IntPtr) As IntPtr    End Function    <DllImport("gdi32.dll", EntryPoint:="DeleteEnhMetaFile", _       SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _    Public Shared Function DeleteEnhMetaFile(ByVal hemfSrc As IntPtr) As Boolean    End Function    ' Metafile mf is set to a state that is not valid inside this function.    Public Shared Function PutEnhMetafileOnClipboard(ByVal hWnd As IntPtr, ByVal mf As Metafile) As Boolean        Dim bResult As New Boolean()        bResult = False        Dim hEMF, hEMF2 As IntPtr        hEMF = mf.GetHenhmetafile() ' invalidates mf        If Not hEMF.Equals(New IntPtr(0)) Then            hEMF2 = CopyEnhMetaFile(hEMF, New IntPtr(0))            If Not hEMF2.Equals(New IntPtr(0)) Then                If OpenClipboard(hWnd) Then                    If EmptyClipboard() Then                        Dim hRes As IntPtr                        hRes = SetClipboardData(14, hEMF2)    ' 14 == CF_ENHMETAFILE                        bResult = hRes.Equals(hEMF2)                        CloseClipboard()                    End If                End If            End If            DeleteEnhMetaFile(hEMF)        End If        Return bResult    End FunctionEnd Class'You can call this function with code that is similar to the following code:        Dim mf As New Metafile("filename.emf")        ClipboardMetafileHelper.PutEnhMetafileOnClipboard(me.Handle,mf)				

Microsoft Visual C# .NET örnek

using System.Drawing.Imaging;using System.Runtime.InteropServices;public class ClipboardMetafileHelper{	[DllImport("user32.dll")]	static extern bool OpenClipboard(IntPtr hWndNewOwner);	[DllImport("user32.dll")]	static extern bool EmptyClipboard();	[DllImport("user32.dll")]	static extern IntPtr SetClipboardData(uint uFormat, IntPtr hMem);	[DllImport("user32.dll")]	static extern bool CloseClipboard();	[DllImport("gdi32.dll")]	static extern IntPtr CopyEnhMetaFile(IntPtr hemfSrc, IntPtr hNULL);	[DllImport("gdi32.dll")]	static extern bool DeleteEnhMetaFile(IntPtr hemf);		// Metafile mf is set to a state that is not valid inside this function.	static public bool PutEnhMetafileOnClipboard( IntPtr hWnd, Metafile mf )	{		bool bResult = false;		IntPtr hEMF, hEMF2;		hEMF = mf.GetHenhmetafile(); // invalidates mf		if( ! hEMF.Equals( new IntPtr(0) ) )		{			hEMF2 = CopyEnhMetaFile( hEMF, new IntPtr(0) );			if( ! hEMF2.Equals( new IntPtr(0) ) )			{				if( OpenClipboard( hWnd ) )				{					if( EmptyClipboard() )					{						IntPtr hRes = SetClipboardData( 14 /*CF_ENHMETAFILE*/, hEMF2 );						bResult = hRes.Equals( hEMF2 );						CloseClipboard();					}				}			}			DeleteEnhMetaFile( hEMF );		}		return bResult;	}}//You can call this function with code that is similar to the following code:Metafile mf = new Metafile( "filename.emf" );ClipboardMetafileHelper.PutEnhMetafileOnClipboard(this.Handle, mf );				
kullanılabilir Gelişmiş bakın kullanılamaz emf wmf erişemiyor

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 323530 - Son İnceleme: 12/07/2015 11:17:04 - Düzeltme: 3.2

Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2, Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2, Microsoft Windows XP Professional Edition, the operating system: Microsoft Windows XP 64-Bit Edition

  • kbnosurvey kbarchive kbmt kbdswgdi2003swept kbprb KB323530 KbMttr
Geri bildirim