bonus630

`Não sou Programador Profissional, faço por diversão. Tecnologia é meu hobbie.`


Categorias



qrcode Tutorial - Recuperando Caminho padrão dos Macros (gms) do Coreldraw usando c#. Visualize esta página no seu Smartphone com este QRcode


Geospeleo Estudos Espeleológicos


Corel na Veia


CSS válido!


Se você não é "poweruser", utilize um antivírus n


> > >

Recuperando Caminho padrão dos Macros (gms) do Coreldraw usando c#.

Autor: | Categoria: CorelDraw SDK


Vou demonstrar como é possível recuperar o caminho padrão dos macros utilizando o c#, este recurso pode ser útil para por exemplo criar instalador de macros mais dinâmicos que outros tipos de instaladores que o caminho é definido estaticamente.

Passo 1 - Vamos recuperar as instalações do Coreldraw


Para isso vamos acessar o registro do windows usando o "namespace" "Microsoft.Win32", nesse "namespace" trabalharemos com a classe "Registry" para acessar a chave de registro "HKEY_CURRENT_USER\Software\Corel" que nos retornará chaves com as versões do Coreldraw instaladas no computador para o usuário atual.

Microsoft.Win32.RegistryKey  key =Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Corel\\CorelDRAW");
string[] keysName = key.GetSubKeyNames();

Com este código você obterá as versões, guarde os valores obtidos para uso futuro, pois no próximo passo não precisaremos do nome das versões somente da chave em si.

Passo 2 - Recuperando o caminho pelo Registro


Bom esse método não é totalmente funcional, pois esta chave do registro que abriga nosso caminho para os gms somente existirá se o usuário utilizou macro alguma vez em seu coreldraw, mas ainda possui uma vantagem ao método seguindo pois economiza processamento, vamos proceder.

Abriremos a chave (versão)\Draw\Application Preferences\VBA, para versões mais recentes do corel e (versão)\CorelDraw\Application Preferences\VBA, para versões mais antigas, utilize o método "OpenSubKey" da classe "RegistryKey" e recupere o valor, 

key.OpenSubKey(17.0\\Draw\\Application Preferences\\VBA).GetValue("LastGMSFolder");

Como expliquei anteriormente esta chave pode não existir se o usuário nunca utilizou o "Docker Macro", então partiremos para o próximo passo caso este falhe.

Passo 3 - Recuperando o caminho com Instância do objeto "Application"


Teremos um pouco mais de processamento quando chegarmos até este momento, e nosso aplicativo poderá até parar de funcionar caso os recursos do computador estirem baixos, aqui temos vantagem e desvantagem.

As vantagens:

Sempre teremos o caminho dos macros mesmo que o usuário nunca ter utilizado macros.

As desvantagens:

Uso maior de processamento, podendo levar até a um eventual falha na aplicação.
Uso do .net 4 para dispensar as referências de dlls do CorelDraw, a adição dessas referências podem causar erros com diferentes versões do corel.

Para instanciarmos o objeto "CorelDraw.Application" vamos utilizar o tipo "dynamic" do .net 4, como isso dispensaremos as referências, o código é muito simples.

dynamic corelApp = Activator.CreateInstance(Type.GetTypeFromProgID("CoreDraw.Application"));

Teremos então a instância do corel padrão do computador, porém se quisermos trabalhar com outras versões precisamos modificar o código para

dynamic corelApp = Activator.CreateInstance(Type.GetTypeFromProgID("CoreDraw.Application.VER"));

onde o "VER" é a versão do corel "13","14","15","16","17", por exemplo.
Com a instância do corel criada podemos fazer muitas coisas e uma delas é recuperar o caminho dos macros.

string macroPath = corelApp.GMSManager.UserGMSPath;

então teremos o nosso resultado.

Com o objeto "Application" é possível realizar diversas tarefas, por exemplo, se você criou uma barra de tarefas customizada em uma dll, você pode adiciona-lá ao coreldraw facilmente, use o código para criar uma nova barra ao coreldraw.

corelApp.FrameWork.CommandBars.Add(barname).Controls.AddCustomControl(className, dllPath);

Onde 

barname é o nome da barra a ser criada.
className é o "namespace"+nome de sua class.
dllPath é o caminho da dll incluindo o nome e a extensão.

Vale lembrar que um processo do corelDraw será executado no computador, então este será um método que pode demorar, meu conselho é coloca-ló em uma Thread separada para não travarmos a UI, e finalize essa thread ao termino do trabalho com a instância do corel para que o processo criado seja finalizado.

Criei meu próprio instalador, este é bem dinâmico instalando qualquer gms em qualquer versão do corel e qualquer sistema operacional.




Instalador Concluido


Voltar

C
o
m
e
n
t
a
r


Mostrar Comentários
Bonus630

/bonus630 /bonus630 /bonus630 /bonus630 email Linkedin /bonus630 bonus630@hotmail.com @bonus630 /bonus630
Todos os Direitos Reservados - Bonus630
Criado e desenvolvido por Reginaldo
Email:Bonus630@gmail.com

Mostrar Citações