First true Windows 8 Metro app from FWH !!!

Post Reply
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

First true Windows 8 Metro window using the WinRT API from FWH and Harbour !!! :-)

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

As a curiosity here you have the Metro IID_IApplication value that it is no where yet in Google :-)

Code: Select all

static const IID IID_IApplication =
{
   0x74B861A1, 0x7487, 0x46A9, 
   { 0x9A, 0x6E, 0xC7, 0x8B, 0x51, 0x27, 0x26, 0xC5 }
}; 
So Google, go and index it :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

In order to build Windows 8 WinRT apps, we need to link combase.lib. Windows 8 provides a combase.dll, so we can extract combase.def this way:

impdef.exe combase.def combase.dll

Then to build a lib: (if using Borland)

implib.exe combase.lib combase.dll

If using Microsoft C/C++:

lib.exe /DEF:combase.def /OUT:combase.lib
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

Google already indexed IID_IApplication, lets go now for IID_IApplicationFactory :-)

Code: Select all

static const IID IID_IApplicationFactory =
{
   0x93BBE361, 0xBE5A, 0x4EE3, 
   { 0xB4, 0xA3, 0x95, 0x11, 0x8D, 0xC9, 0x7A, 0x89 }
};
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
dutch
Posts: 1395
Joined: Fri Oct 07, 2005 5:56 pm
Location: Thailand

Re: First true Windows 8 Metro app from FWH !!!

Post by dutch »

Dear Antonio,

Sorry for the question, what is this?
Antonio Linares wrote:Google already indexed IID_IApplication, lets go now for IID_IApplicationFactory :-)

Code: Select all

static const IID IID_IApplicationFactory =
{
   0x93BBE361, 0xBE5A, 0x4EE3, 
   { 0xB4, 0xA3, 0x95, 0x11, 0x8D, 0xC9, 0x7A, 0x89 }
};
 
Thanks,
Dutch
Regards,
Dutch

FWH 19.01 / xHarbour Simplex 1.2.3 / BCC73 / Pelles C / UEStudio
FWPPC 10.02 / Harbour for PPC (FTDN)
ADS V.9 / MySql / MariaDB
R&R 12 Infinity / Crystal Report XI R2
(Thailand)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

Dutch,

http://en.wikipedia.org/wiki/Globally_unique_identifier
The value of a GUID is represented as a 32-character hexadecimal string, such as {21EC2020-3AEA-1069-A2DD-08002B30309D}, and is usually stored as a 128-bit integer. The total number of unique keys is 2128 or 3.4×1038. This number is so large that the probability of the same number being generated randomly twice is negligible, however, GUID numbers are not always generated randomly
Microsoft Windows uses GUIDs internally to identify the classes and interfaces of COM objects. A script can activate a specific class or object without having to know the name or location of the dynamic linked library that contains it
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
dutch
Posts: 1395
Joined: Fri Oct 07, 2005 5:56 pm
Location: Thailand

Re: First true Windows 8 Metro app from FWH !!!

Post by dutch »

Thanks Antonio,

I've got it.

Regards,
Dutch
Regards,
Dutch

FWH 19.01 / xHarbour Simplex 1.2.3 / BCC73 / Pelles C / UEStudio
FWPPC 10.02 / Harbour for PPC (FTDN)
ADS V.9 / MySql / MariaDB
R&R 12 Infinity / Crystal Report XI R2
(Thailand)
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: First true Windows 8 Metro app from FWH !!!

Post by cnavarro »

Antonio Linares wrote:In order to build Windows 8 WinRT apps, we need to link combase.lib. Windows 8 provides a combase.dll, so we can extract combase.def this way:

impdef.exe combase.def combase.dll

Then to build a lib: (if using Borland)

implib.exe combase.lib combase.dll

If using Microsoft C/C++:

lib.exe /DEF:combase.def /OUT:combase.lib
Antonio
Uso Win 8.1 64 bits
Cómo convierto Combase.Dll a Lib?

He conseguido esa .Dll en la version de Windows 8 a 32 bits y, siguiendo tus pasos he generado Combase.Lib, la he añadido en los correspondientes ficheros .Bat, y he intentado generar el .EXE

En Borland (Bcc582), compila y linka sin errores, pero al ejecutar obtengo un hb_out.log
Application Internal Error - C:\Fwh\Fwh1312\samples\winrt.exe
Terminated at: 2014.04.20 21:52:09
Unrecoverable error 6005: Exception error:

Exception Code:C0000005
Exception Address:00000001
EAX:006A9044 EBX:006A9034 ECX:00000000 EDX:00060000
ESI:00000000 EDI:0054B154 EBP:0018FDF8
CS:EIP:0023:00000001 SS:ESP:002B:0018FDE0
DS:002B ES:002B FS:0053 GS:002B
Flags:00010212
CS:EIP:
SS:ESP: 0049D900 00000001 00000000 00000000 00000000 00000000 0018FF0C 00497AAE 00000000 00000000 00000001 0065D622 00000358 0065C200 002839BC 006A93A0

C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
00000001 0018FDF8 0018FF0C 00497AAE 00000000 00000000 00000001 0065D622 00000358 0065C200 002839BC 006A93A0
00497AAE 0018FF0C 0018FF34 0040154C 0054B148 0054B0A4 0049D900 00000000 00000000 00000000 00000000 00000009
0040154C 0018FF34 0018FF48 00496D84 00000000 0054B034 008122CD
00496D84 0018FF48 0018FF54 0049685A 00000001
0049685A 0018FF54 0018FF84 00546FEB 00400000 00000000 008122CD 0000000A 00000000 00000000 7FFDE000 7FFDE000
00546FEB 0018FF84 0018FF98 00000000 0054B034 74E5495D 7FFDE000
00000000 0018FF98 0018FFDC 774398EE 7FFDE000 A604CE4C 00000000 00000000 7FFDE000 00000000 00000000 00000001


Modules:
0x00400000 0x002CF000 C:\Fwh\Fwh1312\samples\winrt.exe
0x773F0000 0x00168000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x74E40000 0x00140000 C:\WINDOWS\SYSTEM32\KERNEL32.DLL
0x770B0000 0x000CF000 C:\WINDOWS\SYSTEM32\KERNELBASE.dll
0x75E00000 0x00077000 C:\WINDOWS\SYSTEM32\ADVAPI32.DLL
0x73330000 0x00008000 C:\WINDOWS\SYSTEM32\VERSION.DLL
0x732D0000 0x0005E000 C:\WINDOWS\SYSTEM32\WINSPOOL.DRV
0x757C0000 0x00086000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9600.16384_none_7c55c866aa0c3ff0\COMCTL32.DLL
0x77290000 0x00087000 C:\WINDOWS\SYSTEM32\COMDLG32.DLL
0x75440000 0x00108000 C:\WINDOWS\SYSTEM32\GDI32.DLL
0x70F70000 0x00006000 C:\WINDOWS\SYSTEM32\MSIMG32.DLL
0x75E80000 0x011A4000 C:\WINDOWS\SYSTEM32\SHELL32.DLL
0x752F0000 0x0014F000 C:\WINDOWS\SYSTEM32\USER32.DLL
0x75B70000 0x0010B000 C:\WINDOWS\SYSTEM32\OLE32.DLL
0x75850000 0x00087000 C:\WINDOWS\SYSTEM32\OLEAUT32.DLL
0x70EB0000 0x0001D000 C:\WINDOWS\SYSTEM32\OLEDLG.DLL
0x758E0000 0x0014E000 C:\WINDOWS\SYSTEM32\COMBASE.DLL
0x75D40000 0x000BE000 C:\WINDOWS\SYSTEM32\msvcrt.dll
0x75700000 0x0003E000 C:\WINDOWS\SYSTEM32\sechost.dll
0x771D0000 0x000B1000 C:\WINDOWS\SYSTEM32\RPCRT4.dll
0x77180000 0x00041000 C:\WINDOWS\SYSTEM32\SHLWAPI.dll
0x74E20000 0x0001D000 C:\WINDOWS\SYSTEM32\SspiCli.dll
0x74E10000 0x00009000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x71CA0000 0x00077000 C:\WINDOWS\SYSTEM32\SHCORE.DLL
0x74DB0000 0x00051000 C:\WINDOWS\SYSTEM32\bcryptPrimitives.dll
0x77080000 0x00025000 C:\WINDOWS\system32\IMM32.DLL
0x75A70000 0x000F7000 C:\WINDOWS\SYSTEM32\MSCTF.dll

Called from ROINITIALIZE(0)
Called from MAIN(9) in winrt.prg
Y en VC2012 Prof., compila correctamente, pero me da los siguientes errores de linkado:
┌────────────────────────────────────────────────────────────────────────────┐
│ FiveWin for Harbour 13.12 (MSVC++) Dec. 2013 Harbour development power │▄
│ (c) FiveTech, 1993-2013 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8 │█
└────────────────────────────────────────────────────────────────────────────┘█
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Compiling...
Harbour 3.2.0dev (r1310011443)
Copyright (c) 1999-2013, http://harbour-project.org/
Compiling 'winrt.prg' and generating preprocessed output to 'winrt.ppo'...
Lines 4551, Functions/Procedures 1
Generating C source output to 'winrt.c'... Done.
Compilador de optimización de C/C++ de Microsoft (R) versión 17.00.61030 para x86
(C) Microsoft Corporation. Reservados todos los derechos.

winrt.c
Creando biblioteca winrt.lib y objeto winrt.exp
winrt.obj : error LNK2019: símbolo externo "wchar_t * __cdecl AnsiToWide(char *)" (?AnsiToWide@@YAPA_WPAD@Z) sin resolver al que se hace referencia en la función _HB_FUN_WINDOWSCREATESTRING
winrt.obj : error LNK2019: símbolo externo "long __stdcall RoInitialize(int)" (?RoInitialize@@YGJH@Z) sin resolver al que se hace referencia en la función _HB_FUN_ROINITIALIZE
winrt.obj : error LNK2019: símbolo externo "void __stdcall RoUninitialize(void)" (?RoUninitialize@@YGXXZ) sin resolver al que se hace referencia en la función _HB_FUN_ROUNINITIALIZE
winrt.obj : error LNK2019: símbolo externo "long __stdcall RoActivateInstance(void *,void *)" (?RoActivateInstance@@YGJPAX0@Z) sin resolver al que se hace referencia en la función _HB_FUN_ROACTIVATEINSTANCE
winrt.obj : error LNK2019: símbolo externo "long __stdcall RoGetActivationFactory(void *,struct _GUID const &,void * *)"
(?RoGetActivationFactory@@YGJPAXABU_GUID@@PAPAX@Z) sin resolver al que se hace referencia en la función _HB_FUN_ROGETACTIVATIONFACTORY
winrt.obj : error LNK2019: símbolo externo "long __stdcall WindowsCreateString(wchar_t *,unsigned long,unsigned long *)"
(?WindowsCreateString@@YGJPA_WKPAK@Z) sin resolver al que se hace referencia en la función _HB_FUN_WINDOWSCREATESTRING
winrt.obj : error LNK2019: símbolo externo "unsigned int __stdcall WindowsGetStringLen(void *)" (?WindowsGetStringLen@@Y
GIPAX@Z) sin resolver al que se hace referencia en la función _HB_FUN_WINDOWSGETSTRINGLEN
winrt.obj : error LNK2019: símbolo externo "long __stdcall WindowsDeleteString(void *)" (?WindowsDeleteString@@YGJPAX@Z)
sin resolver al que se hace referencia en la función _HB_FUN_WINDOWSDELETESTRING
winrt.exe : fatal error LNK1120: 8 externos sin resolver
Algún hilo para solucionarlo?
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Patrick Mast
Posts: 244
Joined: Sat Mar 03, 2007 8:42 pm

Re: First true Windows 8 Metro app from FWH !!!

Post by Patrick Mast »

Antonio Linares wrote:First true Windows 8 Metro window using the WinRT API from FWH and Harbour !!! :-)
Congrats Antonio! ;-)

This is an interesting read about the difference between regular desktop apps and WinRT apps:
https://software.intel.com/en-us/articl ... evelopment

Patrick
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

Cristobal,

Could you please post Called from ROINITIALIZE source code ? thanks :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: First true Windows 8 Metro app from FWH !!!

Post by cnavarro »

Antonio Linares wrote:Cristobal,

Could you please post Called from ROINITIALIZE source code ? thanks :-)

Code: Select all

#include "FiveWin.ch"

//-------------------------------------------------------------------------//

function Main()

   local hString, hApp, hFact

   MsgInfo( RoInitialize() )

   hString = WindowsCreateString( "Windows.UI.Xaml.Application" )
   
   // hFact = RoGetActivationFactory( hString )
   // AfCreateInstance( hFact )
   
   if ( hApp := RoActivateInstance( hString ) ) != 0
      MsgInfo( "before" )
      AppRun( hApp )
      MsgInfo( "after" )
   else
      MsgInfo( "failed" )   
   endif

   WindowsDeleteString( hString )

   RoUninitialize()

return nil

 
Uso el ejemplo que aparece en Samples
Using the example shown in Samples
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

Cristobal,

Ese es un código que desarrollé basado en el trabajo de un ex-R+D de Borland, con quien lo comenté, pero él mismo no continuó :-(

https://plus.google.com/101466385048851 ... pP97BiiTVH
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: First true Windows 8 Metro app from FWH !!!

Post by Kleyber »

Antonio,

Congratulations!!!! Maybe this is an answer to my previous post, about Windows 8 messages?
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: First true Windows 8 Metro app from FWH !!!

Post by Antonio Linares »

Kleyber,

Somehow it is the same, but this way took us to a dead end place.

The other way that Antonio Mart commented may be ok
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply