Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#3221
Programación General / Re: component object model
22 Septiembre 2016, 15:12 PM
Component Object Model, o mejor conocido por su acrónimo COM, es una interfáz de estándar binario (o lenguaje neutro) que sirve para posibilitar la comunicación entre procesos, por ponerte un ejemplo: la interoperabilidad entre Microsoft Office y tu proceso -puedes manejar el proceso de Office mediante la utilización de sus componentes COM desde tu proceso, dicho de otro modo COM sirve como una técnica IPC (Inter-process communication).

Lo mencionado arriba se consigue mediante el propósito fundamental de COM , poder implementar objetos (que etán definidos en los componentes COM) e instanciarlos de forma dinámica en entornos de programación distintos al que fueron creados, por ejemplo se puede conectar a un componente COM desde un lenguaje soportado por la plataforma .NET (VB.NET, C#, etc), o desde otros lenguajes como C++.

Otra cosa que me gustaría aclararte es que COM y OLE en absoluto son lo mismo, simplemente COM es la base de OLE, o dicho de otro modo OLE se diseñó a partir de COM.




...¿Un libro dices?, en realidad no necesitas ninguno puesto que COM es una tecnología desarrollada por Microsoft, y si algo podemos admirar de Microsoft es que es lider, amo y señor todo poderoso en ofrecernos una basta cantidad de guías y referencias online para programadores, todo tipo de documentación con todo lo que necesitas saber y más, vaya, así que en mi humilde opinión podrías empezar a leer por aquí:


Guías y ejemplos para C++:

No encontré nada para C, espero que te sirva igual con esos links para C++.

PD: Debes formular las preguntas de programación en el subforo de programación apropiado, no en la sección de Windows...

Saludos!
#3222
Si Korea del Norte solo tienen registrados 28 sitios web, ¿cual es la página web con la que Kim se fapea por las noches mientras abraza a su osito de peluche?, y más importante todavía, ¿Kim tiene un perfil en ese Facebook-friend koreano?, me imagino a ese desgraciado ligando en una red social y es que me meo...  :xD

Saludos
#3223
Tienes que modificar toda la lógica del problema que estés intentando resolver...

1. Una aplicación WindowsForms no puede coexistir sin un Form principal, puesto que el Form contiene el método del punto de entrada (Entry point) de la aplicación. Si liberas/cierras el Form principal, es exactamente lo mismo que finalizar la aplicación. En resumen, NO debes liberar el Form principal (a menos que quieras terminar la ejecución de la app).

2. En el Form-diálogo tienes declarado esto:
CitarFriend fmain As New frmMain
...lo que consigues haciendo eso es crear una nueva instancia de frmMain, distinta, duplicada, e innecesariamente puesto que no necesitas crear ni 1 ni 2 ni ninguna instancia adicional del Form principal de tu aplicación, ya la tienes instanciada, úsala. No se si he explicado bien esta parte, ¿entiendes lo que intento decirte?.

3. No necesitas asegurarte de liberar ningún control ni de eliminar ninguna asociación de eventos, todo eso ya lo hace .NET Framework automáticamente al llamar al método Form.Dispose(), se encarga de liberar todos los controles de la colección de controles del Form, entre otros recursos administrados y no administrados...

4. La manera de implementar un método de liberación de recursos (Dispose) no es añadiendo un método cualquiera al que llamaremos "DisposeControls" al tún tún y liberar allí los objetos, no, se hace implementando la interfáz IDIsposable:

Código (vbnet) [Seleccionar]
Class Class1 : Implements IDisposable

#Region " IDisposable Implementation "

   Private isDisposed As Boolean

   Public Sub Dispose() Implements IDisposable.Dispose
       Me.Dispose(isDisposing:=True)
       GC.SuppressFinalize(obj:=Me)
   End Sub

   Protected Overridable Sub Dispose(ByVal isDisposing As Boolean)
       If (Not Me.isDisposed) AndAlso (isDisposing) Then
           ' Free managed resources here...
       End If

       ' Free unmanaged resources here...
       Me.isDisposed = True
   End Sub

#End Region

End Class


El type Form logicamente ya implementa dicha interfaz, así que solamente debes hacer una suplantación:

Código (vbnet) [Seleccionar]
Class Form1 : Inherits Form

   Protected Overrides Sub Dispose(ByVal isDisposing As Boolean)
       ' Free additional managed and unmanaged resources here...
       MyBase.Dispose(disposing:=True)
   End Sub

End Class





No se muy bien lo que pretendes hacer, ya que en realidad ese diálogo dista bastante de ser un diálogo puesto que no le das el uso que se le daría a un diálogo, de todas formas he escrito este ejemplo de aquí abajo que creo te podrá servir.

Lo que hace este ejemplo es mostrar un diálogo a través de un botón del Form principal, y volver a mostrar el Form principal despues de devolver el resultado del diálogo. Eso es lo que creo haber entendido que quieres hacer... y yo solo te muestro una manera apropiada de hacerlo.

Form Principal:
Código (vbnet) [Seleccionar]
Public NotInheritable Class FormMain : Inherits Form

   Friend WithEvents ButtonShowDlg As Button

   Public Sub New()
       ' MyClass.InitializeComponent()

       Me.Text = "Main Window"

       Me.ButtonShowDlg = New Button With
           {
             .Text = "Show Dialog Window...",
             .Location = New Point(10, 10)
           }
   End Sub

   Private Sub FormMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
       Me.Controls.Add(Me.ButtonShowDlg)
   End Sub

   Private Sub ButtonShowDlg_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonShowDlg.Click
       Me.Hide()

       Dim dlgPos As Point
       Dim dlgResult As DialogResult

       Using dlg As FormDlg = My.MyProject.Forms.FormDlg
           dlgResult = dlg.ShowDialog(Me)
           dlgPos = dlg.Location
           Debug.WriteLine(dlgResult.ToString())
       End Using

       Me.Location = dlgPos
       Me.Show()
   End Sub

End Class


Diálogo:
Código (vbnet) [Seleccionar]
Public NotInheritable Class FormDlg : Inherits Form

   Friend WithEvents ButtonClose As Button

   Public Sub New()
       ' MyClass.InitializeComponent()

       With Me
           .Text = "Dialog Window"
           .FormBorderStyle = FormBorderStyle.FixedDialog
           .Owner = My.MyProject.Forms.FormMain
           .StartPosition = FormStartPosition.CenterParent
       End With

       Me.ButtonClose = New Button With
           {
             .Text = "Show Main Window...",
             .Location = New Point(10, 10)
           }

   End Sub

   Private Sub FormDlg_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
       Me.Controls.Add(Me.ButtonClose)
   End Sub

   Private Sub FormDlg_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing
       If (e.CloseReason = CloseReason.ApplicationExitCall) Then
           Me.DialogResult = DialogResult.Cancel
       End If
   End Sub

   Private Sub ButtonClose_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonClose.Click
       Me.DialogResult = DialogResult.OK
       Me.Close()
   End Sub

End Class


Saludos!
#3224
Cita de: MCKSys Argentina en 22 Septiembre 2016, 00:52 AMLas posibilidades son tantas como arena hay en los desiertos

No se trata de posibilidades, sino de hechos, de lo que ocurre cada día en el mundo y por quien ocurre (con respecto a La Unión Europea), solo que algunos interpretan esos hechos como les da la gana pensando que el mundo es de color de rosa y que los del PP son los salvadores de la humanidad, o al menos de España (¡puaj!).

Saludos
#3225
Cita de: programatrix en 21 Septiembre 2016, 22:35 PMla libertad implica poder restringir a las personas que odian esa libertad e intentan destrozarla y eso exige que la policía tenga medidas de oponerse a ellos.

Así que tú le darías libertad a unos muchos y le quitarías ese mismo derecho de libertad a otros muchos, pues vaya un concepto de libertad (y democracia) que tienes tú...

Cita de: programatrix en 21 Septiembre 2016, 22:35 PMEuropa es un paraiso de libertad

Pfff, sólo un votante del PP puede decir estas cosas. Aun tendrás los santos coj**** de seguir pensando lo mismo cuando firmen el tratado del TTIP,  esa Europa tan libre, tan transparente y tan beneficiosa para España de la que hablas, yo alucino...

¿Libertad?, NO, ¿menos restricciones que otros?, SÍ. Fin.
Si tú te crees una persona libre pues... sigue pensándolo, tampoco puedo hacer nada por evitarlo, puesto que cada uno llena su vacío existencial de la forma que puede, algunos lo hacen teniendo fe en una religión, y otros pensando que son personas libres en esta sociedad que nos manipula subliminalmente a cada segundo de nuestras vidas privándonos y haciéndonos olvidar el real significado de la LIBERTAD.

Saludos

#3226
Scripting / Re: VBS Acabar script
21 Septiembre 2016, 20:43 PM
Hola.

No uso VB for Applications, pero no creo que esa condicional se esté evaluando correctamente... prueba a añadirle comillas dobles.

EDITO: Aparte de eso, la variable se llama elc1, pero tu estás intentando evaluar una variable inexistente con nombre elec1, corrígelo en tu código...

Código (vb) [Seleccionar]
elec1 = LCase( InputBox("Quieres archivos o carpetas:","alex","",1000,5000) )

if elec1 = "archivos" then
   ...

elseif elec1 = "carpetas" then
   ...

elseif elec1 = "fin" then
   WScript.Quit(0)

End if


Saludos
#3227
Me respondo a mi mismo, el mejor programa que encontré fue PDF-XChange Viewer:



¿Qué tiene de especial?
- Todas las funcionalidades de edición que cualquier persona pueda desear en un simple visualizador de PDF.
- La instalación completa pesa poco, alrededor de 30 mb.
- No instala basura adicional en el sistema operativo, excepto el registro de lo que parece ser un control ActiveX (PDFXCviewAx.dll) necesario para el funcionamiento de la aplicación.
- Una interfaz de usuario sencilla, intuitiva y traducida al Español.
- Rapidez en tiempos de carga de documentos PDF, previsualización de páginas, y edición.

La única desventaja es que las opciones de edición (como eliminar o extraer páginas) solo se encuentran disponibles en la versión de pago  ...o crackeada :silbar:

PD: Si algunos colores se ven muy oscuros en la imagen que compartí, se debe a que modifiqué el tema visual de mi sistema operativo... y no queda bien el contraste de algunos colores oscuros de ciertos controles, jeje.

Saludos!
#3228
Scripting / Re: BATCH - Problema en bucle infinito
21 Septiembre 2016, 18:52 PM
Cita de: llAudioslavell en 21 Septiembre 2016, 18:33 PMNo se como hacerlo :'( con que opcion lo hago ?

Con este:





En fin, te explico...

Tomando como base el código que mostré, puedes determinar de forma individual el estado de cada proceso de la siguiente manera:

Código (DOS) [Seleccionar]
@Echo OFF & (CHCP 1252)1>&2>NUL
SetLocal EnabledelayedExpansion

:Loop
Set /A "isGUIactive=-1"
Set /A "isCLIactive=-1"
(Call :CheckGUI) & (Set /A "isGUIactive=!ERRORLEVEL!")
(Call :CheckCLI) & (Set /A "isCLIactive=!ERRORLEVEL!")

If "!isGUIactive!" EQU "0" (
   Echo:El proceso "openvpn-gui" está activo.
)

If "!isCLIactive!" EQU "0" (
   Echo:El proceso "openvpn" está activo.
)

If "!isGUIactive!" EQU "0" If "!isCLIactive!" EQU "0" (
   Echo:Ambos procesos está activos.
)

(TimeOut /T 1 /NoBreak)1>&2>NUL
GoTo :Loop

:CheckGUI
(TaskList.exe /FI "IMAGENAME eq openvpn-gui.exe" | Find "openvpn-gui.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"

:CheckCLI
(TaskList.exe /FI "IMAGENAME eq openvpn.exe" | Find "openvpn.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"

#3229
Scripting / Re: BATCH - Problema en bucle infinito
21 Septiembre 2016, 18:30 PM
¿Qué hemos hablado de publicar correctamente un código?, modifica ese código y entonces te responderé... si no lo hace otra persona antes.

...de todas formas, en el último código que te mostré, tienes dos funciones que devuelven 0 o 1 (False o True) cada una dependiendo de si un programa y el otro se encuentran, eso debería bastarte para que puedas comprender como podrías adaptar el código a tus necesidades, es muy sencillo, lo único que necesitas hacer es comprobar el valor de la variable exitCodeCount (o %ERRORLEVEL%).

Saludos
#3230
Scripting / Re: Pregunta (MS-DOS)
21 Septiembre 2016, 18:07 PM
Hola.

Primero de nada, me gustaría aclararte que estás confundiendo MS-DOS con Batch/CMD, pero son dos cosas completamente distintas aunque tengan similitudes visuales.
DOS murió oficialmente con la llegada de Windows XP, hace más de 15 años.




Cita de: TinnahB en 21 Septiembre 2016, 16:59 PM
Se puede hacer que un Batch copie o mueva un archivo a alguna nube como puede ser Mega o Mediafire automáticamente?

Lamentablemente no, al menos no sin ninguna herramienta externa que posibilite la comunicación entre tu sistema operativo y Mega/Mediafire.

La capacidad de Batch por si solo para la interacción con la WWW es NULA, en Batch no puedes interactuar con protocolos Http (sin embargo, FTP si) ni utilizar cookies ni hacer absolutamente nada de nada, es un lenguaje completamente limitado en ese aspecto.

La única solución usando Batch sería buscar, encontrar (o no) y utilizar una aplicación externa command-line que cumpliese con esa función de hospedaje en servicios web.

...O eso, o migrar a otro lenguaje más capacitado, sin embargo aun así todavía quedaría el mayor de los problemas por resolver: el algoritmo de subida -dependiendo del servicio de hosting deberías comprobar si tiene una API pública para facilitarte la subida de archivos, y sino la tiene entonces deberías desarrollar tu propio algoritmo y probablemente hechar mano de OAUTHv2 para iniciar sesión en el servicio online en cuestión... y eso no es moco de pavo.




Cita de: TinnahB en 21 Septiembre 2016, 16:59 PMSi es posible, me pueden pasar el code?

Con la explicación de arriba ha quedado claro que no es posible, pero me veo en la responsabilidad moral de comentarte que aunque fuese posible (que no lo es), aquí no le hacemos la tarea a nadie, no pasamos "códigos" como si fueran cromos ni los intercambiamos por tazos, el foro está para ayudar a avanzar en las dificultades que se te presenten a la hora de intentar desarrollar un algoritmo por ti mismo/a, no hacemos trabajos.

Saludos!