ActiveX
-
quarta-feira, 11 de julho de 2007 14:12
Amigos, estou precisando criar um activeX que instale um aplicativo quando a minha pagina web for chamada, estou usando VS 2005 e não consegui encontrar nenhum exemplo que me desse um rumo, se alguém poder me ajudar eu agradeço.
um abraço todos.
Humberto Lins
Todas as Respostas
-
quarta-feira, 11 de julho de 2007 16:59Mas qual seria sua dúvida?
Como criar o activeX? Como utilizá-lo no HTML? Como fazer para chamar o instalador de seu aplicativo?
Atenciosamente, -
quinta-feira, 12 de julho de 2007 13:49Exatamente Luís, todas estas dúvidas!!!
-
segunda-feira, 5 de março de 2012 20:29
Bom irei responder esse tópico para que outros possam se beneficiar !
Para criar Activex é simples, crie um projeto do tipo class library no VS e desenvolva seu projeto normalmente, acesse as propriedades do projeto e marque a opção "REGISTER FOR COMInterop " E nas opções de assembly marque "assembly as COM visible" !
Adicione uma strong name, va na aba Signing e adicione um novo StrongName !
Depois de adicionado o Strong name abra a classe assemblyinfo.cs e adicione o seguinte:
[assembly: AssemblyKeyFile(@"Caminhodasua StrongName /SuaStrongName.snk")]
Em cima da classe principal do seu user control adicione o seguinte:
[Guid("57F0CFD4-A2FF-4FB1-BDDF-78BBB732DD3F")] [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] public partial class Comeco : UserControl, IObjectSafety {
Crie uma interface de segurança e no userControl principal de sua aplicação faça herdar da classe de segurança !
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.ComponentModel; using System.Text; namespace Activex { [ Serializable, ComVisible(true) ] public enum ObjectSafetyOptions { INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001, INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002, INTERFACE_USES_DISPEX = 0x00000004, INTERFACE_USES_SECURITY_MANAGER = 0x00000008 }; // // MS IObjectSafety Interface definition // [ ComImport(), Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown) ] public interface IObjectSafety { [PreserveSig] long GetInterfaceSafetyOptions( ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions); [PreserveSig] long SetInterfaceSafetyOptions( ref Guid iid, int dwOptionSetMask, int dwEnabledOptions); }; // // Provides a default Implementation for // safe scripting. // This basically means IE won't complain about the // ActiveX object not being safe // public class IObjectSafetyImpl : IObjectSafety { private ObjectSafetyOptions m_options = ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_CALLER | ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_DATA; #region [IObjectSafety implementation] public long GetInterfaceSafetyOptions( ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions) { pdwSupportedOptions = (int)m_options; pdwEnabledOptions = (int)m_options; return 0; } public long SetInterfaceSafetyOptions(ref Guid iid, int dwOptionSetMask, int dwEnabledOptions) { return 0; } #endregion }; }
No construtor do seu Control principal adicione o seguinte código para dar permissão de exibição de Controle Activex na web !
using System.Security.Permissions;
using System.Runtime.InteropServices;SecurityPermission permission;
public Comeco() { try { permission = new SecurityPermission(PermissionState.Unrestricted); permission.Assert(); } catch (Exception) { MessageBox.Show("Control does not have required priveleges.\r\nPlease contact your administrator"); } InitializeComponent(); }
Depois disso compile em modo release !
Pronto, está criado o Activex !//------ COMO EXPOR ACTIVEX EM PÁGINA .ASPX
É simples, para expor seu ActiveX apenas crie um projeto web e na página adicione o seguinte código:
<div> <object id="ActivexTesteClient" classid="CLSID:57F0CFD4-A2FF-4FB1-BDDF-78BBB732DD3F" codebase="ActivexTesteClient.cab" width="600" height="600" ></object> </div>Para chamar um instalador é simples, crie seu instalador, pode ser com o INNOSETUP ou até mesmo com o próprio Projeto do VS Instaler ! e no "CodeBase do object referencie seu instalador ! "
Para saber mais como criar instaladores pesquise ! Aqui no próprio MSDN tem alguma coisa, senão faça uma nova pergunta que eu explico !
Bom era isso, se a resposta for útil marque-a como tal !
Att Anderson Magrianderson magri
- Sugerido como Resposta Anderson Magri segunda-feira, 5 de março de 2012 20:30

