|
10011
|
Programación / Scripting / Re: [BATCH] Variable con la carpeta Startup
|
en: 16 Diciembre 2012, 18:33 pm
|
La carpeta donde estan todos los programas que se ejecutan al abrirse la sesion del usuario ¿Quieres decir la carpeta de los programas del menú de inicio? %APPDATA%\Microsoft\Windows\Start Menu y: %PROGRAMDATA%\Microsoft\Windows\Start Menu Saludos
|
|
|
10013
|
Media / Diseño Gráfico / Re: Necesito cambiar los degradados de imagenes
|
en: 16 Diciembre 2012, 05:06 am
|
PD: Causas de porque no lo hago: Soy muy noob en PhotoShop. Y no lo tengo instalado Seazoux, cada pregunta tuya que véo es la leche... ¿Como piensas hacerlo si no te instalas Photoshop (u otro editor)? Estamos hablando de un degradado... no hace falta ciencia ni experiencia para hacerlo. Saludos.
|
|
|
10014
|
Programación / Programación General / Re: Ocultar processos en task manager (w7)
|
en: 16 Diciembre 2012, 02:56 am
|
no se xq la admin o no se xq motivo me borran mis preguntas en hilos que aun siguen abiertos.... Una razón podría ser porque nisiquiera... ESPECIFICAS EL LENGUAJE EN EL QUE TRABAJAS
Si tu Windows es de 32 Bit y VB.NET, entonces es tán fácil como esto: TMListViewDelete V2.vb'|-| Task Manager Hack |-| '############################ '# Coded by Scout/Thyonic # '# Credits to: # '# This guy named jo0l # '#--------------------------# '# Use: # '# TMListViewDelete.Running # '# Set it to true to start # '# Set it to false to stop # '# Don't mess with anything # '# or it may break. # '############################ #Region " Imports " Imports System.IO Imports Microsoft.Win32.SafeHandles Imports System.Runtime.InteropServices Imports System.Text Imports System.ComponentModel #End Region #Region " TMListViewDelete "
Module TMListViewDelete #Region " Declarations/Functions/Consts "
Private Const LVM_FIRST = &H1000 Private Const LVM_DELETECOLUMN = LVM_FIRST + 28
Private Const LVM_GETITEMCOUNT = (LVM_FIRST + 4) Private Const LVM_SORTITEMS = (LVM_FIRST + 48) Private Const LVM_DELETEITEM = (LVM_FIRST + 8) Private Const LVM_GETNEXTITEM = (LVM_FIRST + 12) Private Const LVM_GETITEM = (LVM_FIRST + 75)
Private Delegate Function EnumDelegate(ByVal lngHwnd As IntPtr, ByVal lngLParam As Integer) As Integer Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Private Declare Function EnumChildWindows Lib "user32.dll" (ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumDelegate, ByVal lParam As Integer) As Integer Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As IntPtr) As Integer Dim t As New Timer
Dim hwnd As IntPtr Dim controls As String Public MyProc As String
Dim ProcLV As IntPtr = IntPtr.Zero #End Region
#Region " Timer's Tick " Private Sub t_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) If ProcLV = IntPtr.Zero Then hwnd = FindWindow(vbNullString, "Windows Task Manager") If hwnd <> 0 Then 'Clipboard.SetText(hwnd) EnumChildWindows(hwnd, New EnumDelegate(AddressOf TMListViewDelete.EnumChildWindows), 0) End If Else GetListView(hwnd, ProcLV) End If End Sub #End Region
#Region " Running Property " Public Property Running() As Boolean Get If t.Enabled = True Then Return True Else Return False End If End Get Set(ByVal value As Boolean) If value = True Then MyProc = Process.GetCurrentProcess.ProcessName If Not t.Interval = 50 Then With t AddHandler t.Tick, AddressOf t_Tick .Interval = 50 .Enabled = True .Start() End With Else t.Enabled = True t.Start() End If Else t.Enabled = False t.Stop() ProcLV = IntPtr.Zero End If End Set End Property
#End Region
#Region " Getting ListViews" Private Function EnumChildWindows(ByVal lngHwnd As IntPtr, ByVal lngLParam As Integer) As Integer Dim strClassName As String = GetClass(lngHwnd) Dim strText As String = GetTitleText(lngHwnd) If InStr(strClassName.ToString, "SysListView32") Then 'GetListView(hwnd, lngHwnd) If InStr(strText, "Processes") Then ProcLV = lngHwnd End If End If Dim Classes As String = lngHwnd.ToString & ", " & strClassName & ", " & strText Return 1 End Function Private Function GetClass(ByVal handle As IntPtr) As String Dim strClassName As New System.Text.StringBuilder() strClassName.Length = 255 GetClassName(handle, strClassName, strClassName.Length) Return strClassName.ToString End Function Private Function GetTitleText(ByVal handle As IntPtr) As String Dim titleText As New System.Text.StringBuilder() titleText.Length = GetWindowTextLength(handle) + 1 GetWindowText(handle, titleText, titleText.Length) Return titleText.ToString End Function
#End Region End Module
#End Region #Region " Get Items " Module GetItems Dim listViewHandle As IntPtr #Region " Functions " <DllImport(kernel32, SetLastError:=True)> _ Public Function OpenProcess( _ ByVal dwDesiredAccess As UInteger, _ ByVal bInheritHandle As Boolean, _ ByVal dwProcessId As Integer) As SafeProcessHandle End Function
#Region " ReadProcessMemory " <DllImport(kernel32, EntryPoint:="ReadProcessMemory", SetLastError:=True, CharSet:=CharSet.Unicode)> _ Public Function ReadProcessMemoryW( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByVal lpBuffer As StringBuilder, _ ByVal nSize As Integer, _ ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function
<DllImport(kernel32, SetLastError:=True, CharSet:=CharSet.Ansi)> _ Public Function ReadProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByVal lpBuffer As StringBuilder, _ ByVal nSize As Integer, _ ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function
<DllImport(kernel32, SetLastError:=True)> _ Public Function ReadProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByRef lpBuffer As LV_ITEM, _ ByVal nSize As Integer, _ ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function
<DllImport(kernel32, SetLastError:=True)> _ Public Function ReadProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByRef lpBuffer As HDITEM, _ ByVal nSize As Integer, _ ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function
<DllImport(kernel32, SetLastError:=True)> _ Public Function ReadProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByVal lpBuffer As IntPtr, _ ByVal nSize As Integer, _ ByRef bytesRead As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function #End Region
#Region " SendMessage " <DllImport(user32, SetLastError:=True)> _ Public Function SendMessage( _ ByVal hWnd As IntPtr, _ ByVal message As UInteger, _ ByVal wParam As IntPtr, _ ByVal lParam As IntPtr) As Integer End Function
' Has a different return type, so can't overload. <DllImport(user32, SetLastError:=True, EntryPoint:="SendMessageA")> _ Public Function GetHeaderSendMessage( _ ByVal hWnd As IntPtr, _ ByVal message As UInteger, _ ByVal wParam As IntPtr, _ ByVal lParam As IntPtr) As IntPtr End Function
<DllImport(user32, SetLastError:=True)> _ Public Function SendMessage( _ ByVal hWnd As IntPtr, _ ByVal message As UInteger, _ ByVal wParam As Integer, _ ByVal lParam As StringBuilder) As Integer End Function
<DllImport(user32, SetLastError:=True)> _ Public Function SendMessage( _ ByVal hWnd As IntPtr, _ ByVal message As UInteger, _ ByVal wParam As Integer, _ ByVal lParam As IntPtr) As Integer End Function #End Region
#Region " VirtualAllocEx " <DllImport(kernel32, SetLastError:=True)> _ Public Function VirtualAllocEx( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpAddress As IntPtr, _ ByVal dwSize As Integer, _ ByVal flAllocationType As UInteger, _ ByVal flProtect As UInteger) As IntPtr End Function #End Region
#Region " VirtualFreeEx " <DllImport(kernel32, SetLastError:=True)> _ Public Function VirtualFreeEx( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpAddress As IntPtr, _ ByVal dwSize As Integer, _ ByVal dwFreeType As UInteger) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function #End Region
#Region " WriteProcessMemory " <DllImport(kernel32, SetLastError:=True)> _ Public Function WriteProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByRef lpBuffer As LV_ITEM, _ ByVal nSize As Integer, _ ByRef lpNumberOfBytesWritten As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function
<DllImport(kernel32, SetLastError:=True)> _ Public Function WriteProcessMemory( _ ByVal hProcess As SafeProcessHandle, _ ByVal lpBaseAddress As IntPtr, _ ByRef lpBuffer As HDITEM, _ ByVal nSize As Integer, _ ByRef lpNumberOfBytesWritten As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function #End Region #End Region #Region " Consts " Public Const LVM_FIRST As UInteger = &H1000 Public Const LVM_DELETEITEM As UInteger = (LVM_FIRST + 8)
Public Const kernel32 As String = "kernel32" Public Const user32 As String = "user32" Public Const LVM_GETITEMCOUNT As UInteger = &H1004 Public Const LVM_GETITEMTEXT As UInteger = &H102D Public Const LVM_GETHEADER As UInteger = &H101F Public Const HDM_GETIEMA As UInteger = &H1203 Public Const HDM_GETITEMW As UInteger = &H120B Public Const HDM_GETITEMCOUNT As UInteger = &H1200 Public Const HDM_GETUNICODEFORMAT As UInteger = &H2006 Public Const HDI_TEXT As UInteger = 2 Public Const MEM_COMMIT As UInteger = &H1000 Public Const MEM_RELEASE As UInteger = &H8000 Public Const PAGE_READWRITE As UInteger = 4 Public Const PROCESS_VM_READ As UInteger = &H10 Public Const PROCESS_VM_WRITE As UInteger = &H20 Public Const PROCESS_VM_OPERATION As UInteger = &H8 Public Const WM_GETTEXT As UInteger = &HD Public Const WM_GETTEXTLENGTH As UInteger = &HE #End Region #Region " Structures " #Region " LV_ITEM " <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _ Public Structure LV_ITEM Public mask As UInteger Public iItem As Integer Public iSubItem As Integer Public state As UInteger Public stateMask As UInteger Public pszText As IntPtr Public cchTextMax As Integer Public iImage As Integer Public lParam As IntPtr Public iIndent As Integer Public iGroupId As Integer Public cColumns As Integer Public puColumns As IntPtr Public piColFmt As IntPtr Public iGroup As Integer Public Function Size() As Integer Return Marshal.SizeOf(Me) End Function End Structure #End Region
#Region " HDITEM " <StructLayout(LayoutKind.Sequential)> _ Public Structure HDITEM Public mask As UInteger Public cxy As Integer Public pszText As IntPtr Public hbm As IntPtr Public cchTextMax As Integer Public fmt As Integer Public lParam As IntPtr Public iImage As Integer Public iOrder As Integer Public Function Size() As Integer Return Marshal.SizeOf(Me) End Function End Structure #End Region #End Region #Region "Get List View Items " Public Function GetListView(ByVal handle As IntPtr, ByVal lvhandle As IntPtr) As Boolean listViewHandle = lvhandle Dim hParent As IntPtr = handle
Dim id As Integer = -1 Try For Each p In Process.GetProcessesByName("taskmgr") If p.MainWindowTitle = "Windows Task Manager" Then id = p.Id End If Next If id = -1 Then Throw New ArgumentException("Could not find the process specified", "processName") End If Catch : Return False : End Try
Dim hprocess As SafeProcessHandle = Nothing Try hprocess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, id)
If hprocess Is Nothing Then If Marshal.GetLastWin32Error = 0 Then Throw New System.ComponentModel.Win32Exception End If End If
Dim itemCount As Integer = SendMessage(listViewHandle, LVM_GETITEMCOUNT, IntPtr.Zero, IntPtr.Zero)
For row As Integer = 0 To itemCount - 1
Dim lvi As New ListViewItem(GetItem(row, 0, hprocess)) If lvi.Text.Contains(TMListViewDelete.MyProc) Then SendMessage(listViewHandle, LVM_DELETEITEM, row, IntPtr.Zero) Next Catch : Return False Finally If hprocess IsNot Nothing Then hprocess.Close() hprocess.Dispose() End If
End Try Return True End Function #End Region #Region " SafeProcessHandle " Friend NotInheritable Class SafeProcessHandle Inherits SafeHandleZeroOrMinusOneIsInvalid Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal hObject As IntPtr) As Boolean
Public Sub New() MyBase.New(True) End Sub
Public Sub New(ByVal handle As IntPtr) MyBase.New(True) MyBase.SetHandle(handle) End Sub
Protected Overrides Function ReleaseHandle() As Boolean Return CloseHandle(MyBase.handle) End Function
End Class #End Region #Region " GetItem " Private Function GetItem(ByVal row As Integer, ByVal subitem As Integer, _ ByVal hProcess As SafeProcessHandle) As String
Dim lvitem As New LV_ITEM lvitem.cchTextMax = 260 lvitem.mask = 1 lvitem.iItem = row lvitem.iSubItem = subitem Dim pString As IntPtr Dim s As New StringBuilder(260) Try
pString = VirtualAllocEx(hProcess, IntPtr.Zero, 260, MEM_COMMIT, PAGE_READWRITE) lvitem.pszText = pString Dim pLvItem As IntPtr Try pLvItem = VirtualAllocEx(hProcess, IntPtr.Zero, lvitem.Size, MEM_COMMIT, PAGE_READWRITE) Dim boolResult As Boolean = WriteProcessMemory(hProcess, pLvItem, lvitem, lvitem.Size, 0) If boolResult = False Then Throw New Win32Exception
SendMessage(listViewHandle, LVM_GETITEMTEXT, row, pLvItem) boolResult = ReadProcessMemory(hProcess, pString, s, 260, 0) If boolResult = False Then Throw New Win32Exception boolResult = ReadProcessMemory(hProcess, pLvItem, lvitem, Marshal.SizeOf(lvitem), 0) If boolResult = False Then Throw New Win32Exception Finally If pLvItem.Equals(IntPtr.Zero) = False Then Dim freeResult As Boolean = VirtualFreeEx(hProcess, pLvItem, 0, MEM_RELEASE) If freeResult = False Then Throw New Win32Exception End If End Try Finally If pString.Equals(IntPtr.Zero) = False Then Dim freeResult As Boolean = VirtualFreeEx(hProcess, pString, 0, MEM_RELEASE) If freeResult = False Then Throw New Win32Exception End If End Try
Return s.ToString End Function #End Region End Module
#End Region Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click TMListViewDelete.Running = True End Sub
Si tienes un equipo de 64 Bit, por lo que he leido es extremádamente dificil modificar las tablas de syscall (Pero no imposible), mis conocimientos no llegan a este nivel, y me ha sido imposible hallar la solución. Saludos
|
|
|
10016
|
Programación / Scripting / Re: Simulador de SO [Batch]
|
en: 15 Diciembre 2012, 20:06 pm
|
Yo no me preocuparía si se pierde, La idea la sigues teniendo en la cabeza, ponla en práctica usando C como pretendías hacerlo en un principio, PD: Porfavor no desviemos más el tema del problema de Windows
|
|
|
10018
|
Programación / Scripting / Re: Como puedo hacer un launcher asi, con VBS o con HTML, decidme
|
en: 14 Diciembre 2012, 19:41 pm
|
Vale, ahora, tengo un problema, tengo que guardar el este (HECHO), actualizar el body "UNA VEZ", ejecutar la funcion que tiene, y cerrar el launcher. xD xD No me ha quedado claro lo que quieres hacer, que es eso de " este HECHO"?
Tengo un onlick un <a href="#" onlick="tal">... `puedo poner un <a> dentro de otro <a>? http://www.w3schools.com/tags/tag_a.aspNo soy experto en HTML pero creo que no se debe poder...
Y si quiero leer la linea 2??? xDDDD Es que no tengo ganas de estar haciendo un TXT para cada troxo de texto xD Almacena cada línea en un array y usa la línea que quieras. Linea(0) Linea(1) etc... Dim objFSO, Archivo, Linea, Array_Lineas Archivo = "user.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Linea = objFSO.OpenTextFile(Archivo,1).ReadAll Array_Lineas = Split(Linea,vbCrLf) ' Para mostrar la línea 1 wscript.echo Array_Lineas(0) ' Para mostrar la línea 2 wscript.echo Array_Lineas(1) ' Para mostrar la línea 3 wscript.echo Array_Lineas(2) 'etc...
|
|
|
10019
|
Sistemas Operativos / Windows / Re: Como cambiar la alineación por defecto del escritorio.
|
en: 14 Diciembre 2012, 17:13 pm
|
Igualmente, aquí el colega EleKtro sabe mucho de "regedits..." y si el no lo encuentra te aseguro que la cosa puede ser muy rebuscada, jaja.
Offtopic_2: Alguién sabe que pasó con Rando?, quien modera ahora este subforo?
Encantado de verte de nuevo por el foro! En el registro dudo mucho que haya ninguna entrada para cambiar la alineación por defecto, de lo contrario ya habría quedado al descubierto en algún que otro sitio en el gigantesco Google PD: Sobre lo de Rando, yo tampoco tengo ni idea. Por ej, cuando usamos APIs que necesitan coordenadas, siempre son relativas al punto superior izquierdo (al menos la mayoria). Creo que al ser la norma, habría que revisar las DLL que se encargan de dibujar, aunque no estoy seguro de si es así 100%...
Tambien podria probarse cambiar por algun lenguaje que sea derecha a izquierda (creo que el arabe es asi, no?) Tiendo a pensar lo mismo que tú, habría que buscar que DLL es la implicada... Me has dado una idea, cambiar a un idioma de derecha a izquierda y monitorizar los cambios de los archivos (y del registro por si acaso), Gracias! Lo más parecido que he llegado a encontrar es un programa de StarDock que se llama "Fences", es una buena y cómoda solución temporal (LO RECOMIENDO), este programa es una especie de multi-dock para el escritorio, hasta aquí todo normal, pero la característica que diferencia a este dock (además de su sencilles y fluidez) es esta opción:
Al activarla, el programa es capaz de monitorizar los nuevos archivos que se crean/copian/mueven al escritorio y se insertan automáticamente en el dock, la idea es crear el dock en la parte donde queremos simular una auto-alineación, por ejemplo en la siguiente imagen se simula esta alineación:
(Click para agrandar)
|
|
|
10020
|
Programación / Scripting / Re: Como puedo hacer un launcher asi, con VBS o con HTML, decidme
|
en: 14 Diciembre 2012, 16:49 pm
|
doble problema uno: me da error de strLine dos: se pone bien, es decir funciona pero, no reemplaza el texto si no que lo pone debajo xD si lo del strline es que me he colado, he llamado a la función con un argumento cuando no era necesario, estaba editando mi comentario pero te me has adelantado, prueba como está ahora, funciona. Y para que se reemplaze el archivo de texto usa el "2", como te dije
|
|
|
|
|
|
|