En esta entrada os voy a mostrar un truco bastante interesante para aquellos que os guste usar Chrome y también Cortana de Windows 10.
No es que este en contra del buscador Bing, ni del navegador Microsoft Edge. Soy muy buenos productos.
Cortana puede hacer muchas cosas por nosotros de forma desantendida, pero como habreís podido comprobar usa el navegador Edge y el motor de búsquedas Bing.
Lo voy a explicar de forma sencilla, puesto que es preciso realizar ciertas tareas.
Lo primero de todo podéis descargaros este archivo que os he preparado en RAR. No obstante la fuente se encuentra en GitHub, pero yo os lo dejo ya bastante mascado 😉
Os recomiendo crear una carpeta en el raíz del disco duro (c:\) con el nombre Chrome-con-Cortana
Ejemplo: C:\Chrome-con-Cortana
Después una vez descomprimido los archivos del rar en esta carpeta, ejecutar el programa install.cmd con permisos de administrador (SBDR). No me hago responsable del uso que hagáis de este programa, podéis comprobar todos los comentarios en la forja. El archivo rar se encuentra libre de virus (comprobado con avast y malwarebytes), realmente es un script cuyo código en CS se adjunta, y unos cambios en el registro de windows (para realizar los redireccionamientos de aplicación), en la parte inferior explico su funcionamiento en líneas generales.
Os pedirá teclear la ruta de acceso, os lo dejo indicada para copiar y pegar
La ruta de acceso.
C:\Chrome-con-Cortana\SearchWithMyBrowser.exe
Se pega sin comillas. Una vez introducida teclear enter, después os pedirá teclear una tecla para continuar.
Ahora es el momento de crear la asociación del programa para abrir Chrome. Tendréis que decir que vais a usar SearchWithMyBrowser, y pulsar aceptar.
Ahora puede que tengáis que reiniciar. En caso de no funcionar, tendréis que asociar el navegador por defecto de Edge a Google Chrome de nuevo (en determinados casos).
Para terminar tendremos que instalar la extensión Chrometana en Google Chrome, si deseamos que las búsquedas que ya se efectúan en chrome se hagan en google o yahoo y no en bing. Esto es opcional.
Consejos Sobre Cortana.
Cortana es una interesante herramienta para agilizar las operaciones en el sistema Windows 10. Es preciso para sacarle todo el partido, configurar el micrófono para realizar solicitudes por voz.
En mi caso, me gusta activar la opción «Hola Cortana», una vez realizado, esto, cada vez que pronunciéis «Hola cortana», se quedará esperando una orden, en es este instante cuando podéis sacar provecho a este truco, puesto que si decís por ejemplo, abre información sobre algo …, el sistema os abrirá la consulta con Chrome y empleando el motor de búsquedas que deseéis.
Podéis encontrar Cortana en el icono al lado de inicio. Existen muchas frases interesantes, recordatorios, etc, os asombrará la precisión con la que trabaja. Por ejemplo, podéis decirle, hola cortana, que temperatura hace hoy?, hola cortana, cuéntame un chiste … 😉
Icono que tendréis que emplear al lado de inicio de Windows.
Ejemplo de chiste.
Cómo funciona este truco o técnica.
Son 2 scripts creados en CSharp y cuyo código fuente, se puede ver en SearchWithMyBrowser.cs
using Microsoft.Win32; using System; using System.Diagnostics; using System.Runtime.InteropServices; public class SearchWithMyBrowser { [Flags] enum HChangeNotifyEventID { // ... SHCNE_ASSOCCHANGED = 0x08000000 // ... } [Flags] enum HChangeNotifyFlags { // ... SHCNF_IDLIST = 0x0000 // ... } [DllImport("shell32.dll")] static extern void SHChangeNotify(HChangeNotifyEventID wEventId, HChangeNotifyFlags uFlags, IntPtr dwItem1, IntPtr dwItem2); public static void Main(string[] CommandLine) { if (CommandLine[0] == "/register") { RegistryKey Software = Registry.LocalMachine.OpenSubKey("Software", true); RegistryKey Class = Software.CreateSubKey(@"Classes\SearchWithMyBrowser", true); Class.SetValue("URL Protocol", string.Empty); Class.SetValue(string.Empty, "URL:SearchWithMyBrowser Protocol"); RegistryKey Command = Class.CreateSubKey(@"shell\open\command"); Command.SetValue(string.Empty, "\"" + Process.GetCurrentProcess().MainModule.FileName + "\" \"%1\""); RegistryKey URLAssociations = Software.CreateSubKey(@"SearchWithMyBrowser\Capabilities\URLAssociations", true); URLAssociations.SetValue("microsoft-edge", "SearchWithMyBrowser"); RegistryKey RegisteredApplications = Software.OpenSubKey("RegisteredApplications", true); RegisteredApplications.SetValue("SearchWithMyBrowser", @"Software\SearchWithMyBrowser\Capabilities"); SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); } else if (CommandLine[0] == "/unregister") { RegistryKey Software = Registry.LocalMachine.OpenSubKey("Software", true); RegistryKey RegisteredApplications = Software.OpenSubKey("RegisteredApplications", true); RegisteredApplications.DeleteValue("SearchWithMyBrowser"); Software.DeleteSubKeyTree("SearchWithMyBrowser"); RegistryKey Classes = Software.OpenSubKey("Classes", true); Classes.DeleteSubKeyTree("SearchWithMyBrowser"); SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); } else { Process.Start(CommandLine[0].Substring(15)); } } }
Se encarga de cambiar la asociación de Edge, registrando una aplicación en el registro, a modo de redirección cuando se solicita.
Respecto al archivo make.cmd, se encarga de realizar una compilación del archivo cs, usando el archivo csc.exe que se encuentra en el framework instalado versión 4. Yo dispongo de un sistema de 64 bits, podeis cambiar la ruta por Framework64, pero me imagino que el autor lo dejo así para que sea compatible con arquitecturas de 32 y 64. El csc puede ser cambiado en función del framework (mejor dejarlo por defecto).
@echo off rem Clean older builds del /F /Q "%~dp0SearchWithMyBrowser.exe" del /F /Q "%~dp0SearchWithMyBrowser.pdb" echo. FOR %%i IN ("%~dp0SearchWithMyBrowser.exe" "%~dp0SearchWithMyBrowser.pdb") DO ( IF EXIST %%i ( IF %0=="%~f0" ( cls echo Could not clean! echo. echo Try deleting %%i by yourself. echo. pause ) exit /B ) ) rem Build the executable "%windir%\Microsoft.NET\Framework\v4.0.30319\csc.exe" /nologo /target:winexe /debug /optimize /nowin32manifest /out:"%~dp0SearchWithMyBrowser.exe" "%~dp0SearchWithMyBrowser.cs" > "%temp%\csc.log" IF NOT EXIST "%~dp0SearchWithMyBrowser.exe" ( IF %0=="%~f0" ( cls echo Could not compile! echo. echo The error log might contain relevant information about what happened: ) type "%temp%\csc.log" IF %0=="%~f0" ( echo. pause ) )
El instalador, se encarga de realizar la asociación, su código lo muestro en la parte inferior, como se puede apreciar (se puede ver con cualquier editor de texto), no hace cosas raras, simplemente registrar el programa mediante rundll32.exe shell32.dll,OpenAs_RunDLL microsoft-edge:,
@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto gotAdmin) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" goto End :GotAdmin if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs") pushd "%CD%" CD /D "%~dp0" :FileExists cls set RequiredFiles=1 IF NOT EXIST ".\SearchWithMyBrowser.exe" (set RequiredFiles=0) IF /I %RequiredFiles% EQU 0 ( echo One or more required files does not exists. Are you sure you successfully compiled? After making sure, please continue. pause goto FileExists ) :WhereIsExecutable cls echo Tip! To directly get the path of a file: echo 1. Right-click on it while pressing "Shift". echo 2. Click on "Copy as Path". echo 3. Right-click in this command prompt. echo 4. If the path has not pasted itself already, click on "Paste". echo 5. Press "Enter" to validate. echo. echo. set /P Executablewq=Move the executable at any desired permanent location, and then type its location here: call:GetFilenameWithoutQuotes %Executablewq% IF NOT DEFINED Executable ( cls echo You did not specify a file! pause goto WhereIsExecutable ) IF NOT EXIST "%Executable%" ( cls echo The file you specified does not exists! pause goto WhereIsExecutable ) cls "%Executable%" /register cls echo A dialog will show after you press any key. Select "SearchWithMyBrowser.exe" and press "OK". pause rundll32.exe shell32.dll,OpenAs_RunDLL microsoft-edge: :End :GetFilenameWithoutQuotes if not [%2]==[] set noquotes=1 if [%noquotes%]==[1] (set Executable=%* & exit /b) set Executable=%~f1 exit /b
Os dejo el repositorio del autor, podéis colaborar con él.
https://github.com/charlesmilette