Para adicionar algo à área de transferência, primeiro é necessário alocar memória para os dados e, em seguida, passar uma alça desse bloco de memória para a área de transferência. Como os aplicativos WIN32 estão limitados a 2 GB de memória, a quantidade de memória que você poderia alocar estaria relacionada ao tamanho da RAM que ainda está disponível no seu aplicativo. Com o parâmetro adicional / 3GB no boot.ini, você pode aumentar esse número um pouco. E se o seu sistema tiver menos de 2 GB de RAM, aumentar o tamanho do arquivo de troca também ajudará a enviar até 2 GB. Obviamente, o aplicativo cliente também precisa ser capaz de usar esses dados. Tentando abater 1500 MB de dados em um processo que tenha apenas 600 MB disponíveis não funcionará.
Mas se você realmente deseja enviar grandes blocos de dados, use arquivos temporários! Um truque seria usando uma interface COM. Crie sua própria classe COM primeiro, que precisa envolver os dados, onde os dados devem ser baseados em arquivos. Em seguida, crie um arquivo temporário e adicione seus dados a esse arquivo. Crie um objeto COM que vincula a esse arquivo temporário e envie o objeto COM para o cliente. O cliente também precisa ser capaz de manipular o objeto COM, mas pode usá-lo para extrair os dados dele novamente. Isso teoricamente forneceria espaço de memória ilimitado. Desvantagem: você precisa escrever uma classe COM e saber o que está fazendo.
Ou use outras técnicas para enviar os dados. Canais nomeados, processadores de mensagens, TCP / IP ... Existem muitas técnicas alternativas entre processos para enviar dados entre dois aplicativos.
Como você está usando o VB6, não vou começar a usar as opções .NET ou WIN64.