Y a-t-il une limite à la taille des données qui peuvent être copiées dans le presse-papiers ? J'utilise VB6 et j'ai besoin de copier des blocs de données dans le presse-papiers.
Réponses
Trop de publicités?Pour ajouter quelque chose au presse-papiers, vous devez d'abord allouer de la mémoire pour les données, puis passer un handle de ce bloc de mémoire au presse-papiers. Les applications WIN32 étant limitées à 2 Go de mémoire, la quantité de mémoire que vous pouvez allouer dépend de la taille de la RAM encore disponible dans votre application. Avec le paramètre supplémentaire /3GB dans boot.ini, vous pouvez augmenter un peu cette quantité. Et si votre système dispose de moins de 2 Go de RAM, l'augmentation de la taille du fichier swap vous aidera également à envoyer jusqu'à 2 Go. Bien entendu, l'application cliente doit également être en mesure d'utiliser ces données. Essayer de faire passer 1500 Mo de données dans un processus qui ne dispose que de 600 Mo ne fonctionnera pas.
Mais si vous voulez vraiment envoyer d'énormes blocs de données, utilisez plutôt les fichiers temporaires ! Une astuce serait d'utiliser une interface COM. Créez d'abord votre propre classe COM, qui doit envelopper les données, où les données doivent être basées sur des fichiers. Créez ensuite un fichier temporaire et ajoutez vos données dans ce fichier. Créez un objet COM qui se lie à ce fichier temporaire et envoyez l'objet COM au client. Le client doit être capable de gérer l'objet COM également, mais il peut ensuite l'utiliser pour extraire à nouveau les données du fichier. En théorie, vous disposez ainsi d'un espace mémoire illimité. Inconvénient : vous devez écrire une classe COM et savoir ce que vous faites.
Ou utiliser d'autres techniques pour envoyer les données. Des tuyaux nommés, des mailslots, TCP/IP... Il existe de nombreuses techniques alternatives inter-processus pour envoyer des données entre deux applications.
Puisque vous utilisez VB6, je ne commencerai pas à parler des options .NET ou WIN64.
La plupart des données sont copiées en tant que référence plutôt que les données elles-mêmes, de sorte que vous pouvez copier presque tout, quelle que soit la taille. Par contre, le texte est réellement copié et, d'après ce que je sais, la quantité de données est limitée à la quantité de mémoire vive disponible. Rappelez-vous ceci, si vb6 peut le gérer, je suis sûr que le presse-papiers peut le gérer.