max2010

Membres
  • Compteur de contenus

    5
  • Inscription

  • Dernière visite

max2010's Achievements

Débutant

Débutant (1/7)

0

Réputation sur la communauté

  1. when will they release the source??
  2. This app create an iso from a folder and patched to work with Iso2god and thus save space by eliminating the content is not needed. Download Link: Spanish Version http://www.megaupload.com/?d=3XR3LG7I English Version: http://www.megaupload.com/?d=1892U01T
  3. I share the project, because I am a bit tired / stuck, no debug This is a hell of trial and error. I hope it will encourage more people to develop a self-loader and open source. //--------------------------------------------------------------------------------------// XuiTutorial.cpp//// Shows how to display and use a simple XUI scene.//// Xbox Advanced Technology Group.// Copyright (C) Microsoft Corporation. All rights reserved.//--------------------------------------------------------------------------------------#include <xtl.h>#include <xui.h>#include <xuiapp.h>#include <stdio.h>#include <xtl.h>#include <string>using namespace std;/* List of physical drive "\\Device\\Flash" "\\Device\\Mu1" "\\Device\\Mu0" "\\Device\\Cdrom0" "\\Device\\Harddisk0\\Partition0" "\\Device\\Harddisk0\\Partition1" "\\Device\\Harddisk0\\Partition2" "\\Device\\Harddisk0\\Partition3" "\\Device\\Mass0" "\\Device\\Mass1" "\\Device\\Mass2" */ #define DEVICE_NAND_FLASH 0 #define DEVICE_MEMORY_UNIT0 1 #define DEVICE_MEMORY_UNIT1 2 #define DEVICE_CDROM0 3 #define DEVICE_HARDISK0_PART0 4 #define DEVICE_HARDISK0_PART1 5 #define DEVICE_HARDISK0_PART2 6 #define DEVICE_HARDISK0_PART3 7 #define DEVICE_USB0 8 #define DEVICE_USB1 9 #define DEVICE_USB2 10 typedef struct _STRING { USHORT Length; USHORT MaximumLength; PCHAR Buffer; } STRING; // Follow the white rabbit extern "C" int __stdcall ObCreateSymbolicLink( STRING*, STRING*); extern "C" int __stdcall ObDeleteSymbolicLink( STRING* );HRESULT Monter( int periphPhys, char* lettreLecteur ){ char lecteurCible[16]; sprintf_s(lecteurCible,"\\??\\%s", lettreLecteur ); char * periphOriginal; switch( periphPhys ) { case DEVICE_NAND_FLASH: periphOriginal = "\\Device\\Flash"; break; case DEVICE_MEMORY_UNIT0: periphOriginal = "\\Device\\Mu0"; break; case DEVICE_MEMORY_UNIT1: periphOriginal = "\\Device\\Mu1"; break; case DEVICE_CDROM0: periphOriginal = "\\Device\\Cdrom0"; break; case DEVICE_HARDISK0_PART0: periphOriginal = "\\Device\\Harddisk0\\Partition0"; break; case DEVICE_HARDISK0_PART1: periphOriginal = "\\Device\\Harddisk0\\Partition1"; break; case DEVICE_HARDISK0_PART2: periphOriginal = "\\Device\\Harddisk0\\Partition2"; break; case DEVICE_HARDISK0_PART3: periphOriginal = "\\Device\\Harddisk0\\Partition3"; break; case DEVICE_USB0: periphOriginal = "\\Device\\Mass0"; break; case DEVICE_USB1: periphOriginal = "\\Device\\Mass1"; break; case DEVICE_USB2: periphOriginal = "\\Device\\Mass2"; break; } STRING PeriphOriginal = { strlen( periphOriginal ), strlen( periphOriginal ) + 1, periphOriginal }; STRING LienSymbolique = { strlen( lecteurCible ), strlen( lecteurCible ) + 1, lecteurCible }; return ( HRESULT )ObCreateSymbolicLink( &LienSymbolique, &PeriphOriginal );} HRESULT Demonter( char* lettreLecteur ){ char lecteurCible[16]; sprintf_s( lecteurCible,"\\??\\%s", lettreLecteur ); STRING LienSymbolique = { strlen(lecteurCible), strlen(lecteurCible) + 1, lecteurCible }; return ( HRESULT )ObDeleteSymbolicLink( &LienSymbolique );}//--------------------------------------------------------------------------------------// Scene implementation class.//--------------------------------------------------------------------------------------class CMyMainScene : public CXuiSceneImpl{protected: // Control and Element wrapper objects. CXuiTextElement m_text1; CXuiTextElement m_text2; CXuiList m_list1; CXuiList m_list2; CXuiList m_list3; CXuiImageElement m_image1; CXuiScrollBar m_scrollBar1; CXuiProgressBar m_progressBar1; CXuiElement m_button1; string directorioActual; string filesToCopy[200][2]; string filesToMove[200][2]; // Message map. XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit ) XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_ON_XM_KEYDOWN( OnKeyDown ) XUI_END_MSG_MAP() //---------------------------------------------------------------------------------- // Performs initialization tasks - retreives controls. //---------------------------------------------------------------------------------- HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) { // Retrieve controls for later use. GetChildById( L"XuiText1", &m_text1 ); GetChildById( L"XuiText2", &m_text2 ); GetChildById( L"XuiCommonList1", &m_list1 ); GetChildById( L"XuiCommonList2", &m_list2 ); GetChildById( L"XuiCommonList3", &m_list3 ); GetChildById( L"XuiImage1", &m_image1 ); GetChildById( L"XuiScrollBar1", &m_scrollBar1 ); GetChildById( L"XuiProgressBar1", &m_progressBar1 ); GetChildById( L"XuiButton1", &m_button1 ); // Montamos los dispositivos// if (ERROR_SUCCESS == Monter(DEVICE_CDROM0, "dvd0:"))// m_list1.DeleteItems(3, 1); Monter(DEVICE_CDROM0, "dvd0:"); Monter(DEVICE_USB0, "usb0:"); Monter(DEVICE_HARDISK0_PART1, "hdd1:"); Monter(DEVICE_NAND_FLASH, "flash:"); //Oculta los elementos inecesarios m_list3.SetOpacity(0); m_text2.SetOpacity(0); m_progressBar1.SetOpacity(0); m_button1.SetOpacity(0); //Enfoca la lista de dispositivos m_list1.SetFocus(XUSER_INDEX_ANY); return S_OK; } //---------------------------------------------------------------------------------- // Handler for the button press message. //---------------------------------------------------------------------------------- HRESULT OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { LPSTR fileName = new char[MAX_PATH]; LPSTR fullPath = new char[MAX_PATH]; LPSTR device = new char[MAX_PATH]; LPSTR Option = new char[MAX_PATH]; // Si se ha pulsado un boton de la lista de dispositivos if( hObjPressed == m_list1 ) { bHandled = TRUE; //Se convierte el nombre del dispositivo a caracteres anchos ::WideCharToMultiByte( CP_ACP, NULL,m_list1.GetText(m_list1.GetCurSel()), -1, device,MAX_PATH,NULL,NULL ); //Se ocualta la lista de dispositivos m_list1.SetOpacity(0); //Se muestra el dispositivo seleccionado OpenDevice(device); } // Si se ha pulsado un boton de la lista de ficheros else if( hObjPressed == m_list2 ) { bHandled = TRUE; //Añade una barra al directorio actual directorioActual+="\\"; //Convierte el nombre del fichero a caracteres ::WideCharToMultiByte(CP_ACP,NULL,m_list2.GetText(m_list2.GetCurSel()),-1,fileName,MAX_PATH,NULL,NULL); //Añade el nombre del fichero al directorio Actual directorioActual+= fileName; //Copia el directorioActual al puntero directorio directorioActual._Copy_s(fullPath, directorioActual.length(),directorioActual.length()); //Añade el final del fichero fullPath[directorioActual.length()]='\0'; //Si el fichero seleccionado es un directorio if(FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(fullPath)) { //Abre el directorio OpenDevice(fullPath); } else //Si es un fichero { //Se comprueba si es un ejecutable string str = fileName; if (str.find(".xex")!=string::npos) { //Se lanza el ejecutable XLaunchNewImage(fullPath, NULL); } } } // Si se ha pulsado un boton de la lista de opciones de ficheros else if( hObjPressed == m_list3 ) { bHandled = TRUE; //Si se ha seccionado "Copiar" if (m_list3.GetCurSel()==0) { m_text1.SetText(L"Copiar"); CopyFiles(); } //Si se ha seccionado "Cortar" else if (m_list3.GetCurSel()==1) { m_text1.SetText(L"Cortar"); CutFiles(); } //Si se ha seccionado "Pegar" else if (m_list3.GetCurSel()==2) { m_text1.SetText(L"Pegar"); PasteFiles(); } //Si se ha seccionado "Borrar" else if (m_list3.GetCurSel()==3) { m_text1.SetText(L"Borrar"); DeleteFiles(); } //Si se ha seccionado "Crear" else if (m_list3.GetCurSel()==4) { m_text1.SetText(L"Crear"); CreateDir(); } //Se oculta la lista de opciones m_list3.SetOpacity(0); //Se enfoca la lista de ficheros m_list2.SetFocus(XUSER_INDEX_ANY); } return S_OK; } //---------------------------------------------------------------------------------- // Handler for the button press message. //---------------------------------------------------------------------------------- HRESULT OnKeyDown(XUIMessageInput *pInputData, BOOL& bHandled) { string str; CXuiControl ItemCtrl1; CXuiControl ItemCtrl2; CXuiControl ItemCtrl3; // Recuperamos los botones seleccionado de todas las listas // para comprobar en que lista esta enfocada m_list1.GetCurSel(&ItemCtrl1); m_list2.GetCurSel(&ItemCtrl2); m_list3.GetCurSel(&ItemCtrl3); // Si se pulsa sobre la lista de dispositivos if ( ItemCtrl1 == ItemCtrl1.GetFocus(XUSER_INDEX_ANY)) { } // Si se pulsa sobre la lista de ficheros else if ( ItemCtrl2 == ItemCtrl2.GetFocus(XUSER_INDEX_ANY)) { // Si se pulsa el boton B if ( pInputData->dwKeyCode == VK_PAD_B ) { //Se obtiene la posicion de la ultima barra del directorio actual size_t pos = directorioActual.find_last_of("\\"); if (pos!=string::npos) { //Se extrae el subdirectorio directorioActual = directorioActual.substr(0,pos); //Se abre el subdirectorio OpenDevice(directorioActual); } bHandled = TRUE; } // Si se pulsa el boton BACK else if ( pInputData->dwKeyCode == VK_PAD_BACK ) { //Se muestra la lista de dispositivos m_list1.SetOpacity(1); //Se enfoca la lista de dispositivos m_list1.SetFocus(XUSER_INDEX_ANY); bHandled = TRUE; } // Si se pulsa el boton X else if ( pInputData->dwKeyCode == VK_PAD_X ) { // Si el boton seleccionado esta marcado if ( TRUE == m_list2.GetItemCheck(m_list2.GetCurSel())) { // Se quita la marca y se habilita m_list2.SetItemCheck(m_list2.GetCurSel(), FALSE); m_list2.SetItemEnable(m_list2.GetCurSel(), TRUE); m_text1.SetText(L"UnCheck"); } // Si el boton seleccionado no esta marcado else { // Se marca y se deshabilita m_list2.SetItemCheck(m_list2.GetCurSel(), TRUE); m_list2.SetItemEnable(m_list2.GetCurSel(), FALSE); m_text1.SetText(L"Check"); } bHandled = TRUE; } // Si se pulsa el boton Y else if ( pInputData->dwKeyCode == VK_PAD_Y ) { // Se muestra la lista de opciones m_list3.SetOpacity(1); // Se enfoca la lista de opciones m_list3.SetFocus(XUSER_INDEX_ANY); bHandled = TRUE; } // Si se pulsa arriba en el pad else if ( pInputData->dwKeyCode == VK_PAD_DPAD_UP ) { XuiScrollBarSetItemData( m_scrollBar1, m_list2.GetItemCount(), m_list2.GetCurSel(), 7 ); } // Si se pulsa abajo en el pad else if ( pInputData->dwKeyCode == VK_PAD_DPAD_DOWN ) { XuiScrollBarSetItemData( m_scrollBar1, m_list2.GetItemCount(), m_list2.GetCurSel(), 7 ); } // Si se pulsa sobre la lista de opciones de ficheros }else if( ItemCtrl3 == ItemCtrl2.GetFocus(XUSER_INDEX_ANY)) { } return S_OK; } //---------------------------------------------------------------------------------- // Abre un dispositivo y rellena la lista con los nombres. //---------------------------------------------------------------------------------- HRESULT OpenDevice(string strFind) { HANDLE hFind; //Manejador de ficheros WIN32_FIND_DATA wfd; //Informacion de los ficheros LPSTR directorio = new char[MAX_PATH]; //Directorio LPWSTR directorioW = new wchar_t[MAX_PATH]; //Directorio en caracteres anchos LPSTR fileName = new char[MAX_PATH]; //Nombre del fichero LPWSTR fileNameW = new wchar_t[MAX_PATH]; //Nombre del fichero en caracteres anchos //Guarda el directorio actual directorioActual = strFind; //Enfoca la lista de archivos m_list2.SetFocus(XUSER_INDEX_ANY); //Añado \* al directorio para buscar todos los archivos strFind+= "\\*"; //Copia el directorio al puntero directorio strFind._Copy_s(directorio, strFind.length(),strFind.length()); //Añade el final del fichero directorio[strFind.length()]='\0'; //Convierte el directorio a caracteres anchos directorioW ::MultiByteToWideChar( CP_ACP, NULL,directorio, -1, directorioW, MAX_PATH); // Muestro el nombre del directorio explorado m_text1.SetText(directorioW); // Empieza la busqueda de ficheros hFind = FindFirstFile( directorio, &wfd ); if( INVALID_HANDLE_VALUE == hFind ) { //Si falla la busqueda } else { // Elimino todos los Items de la lista m_list2.DeleteItems(0, m_list2.GetItemCount()); int i = 0; // Se trata el fichero y se obtiene el siguiente do { string str = wfd.cFileName; // Si existe el fichero nxeart, cargo la imagen de fondo// if (strcmp (wfd.cFileName,"nxeart")== 0) if (str.find("nxeart")!=string::npos) { CargarFondo(); } // Inserto un Item en la lista y le paso el nombre del fichero convirtiendolo en caracteres anchos m_list2.InsertItems(i,1); fileName = wfd.cFileName; ::MultiByteToWideChar( CP_ACP, NULL,fileName, -1, fileNameW, MAX_PATH); m_list2.SetText(i,fileNameW); //Segun el tipo de fichero se asigna un icono if(FILE_ATTRIBUTE_DIRECTORY == wfd.dwFileAttributes) { m_list2.SetImage(i,L"file://game:/media/folder.png"); } else if ((str.find(".xex"))!=string::npos) { m_list2.SetImage(i,L"file://game:/media/xex.png"); } else m_list2.SetImage(i,L"file://game:/media/file.png"); i++; } while( FindNextFile( hFind, &wfd )); // Cierra el manejador de la busqueda FindClose( hFind ); } return S_OK; } //---------------------------------------------------------------------------------- // Copia los ficheros //---------------------------------------------------------------------------------- VOID CopyFiles() { LPSTR fileName = new char[MAX_PATH]; //Nombre del fichero LPWSTR fileNameW = new wchar_t[MAX_PATH]; //Nombre del fichero en caracteres anchos int cont = 0; for (int i=0; i<m_list2.GetItemCount(); i++) { if (m_list2.GetItemCheck(i) == TRUE ) { //Convierte el nombre del fichero a caracteres ::WideCharToMultiByte(CP_ACP,NULL,m_list2.GetText(i),-1,fileName,MAX_PATH,NULL,NULL); //Añade el nombre del fichero al directorio Actual filesToCopy[cont][0]+= directorioActual; filesToCopy[cont][0]+= "\\"; filesToCopy[cont][0]+= fileName; filesToCopy[cont][0]+= '\0'; cont++; } filesToCopy[cont][0].clear(); filesToMove[0][0].clear(); filesToCopy[0][0]._Copy_s(fileName, filesToCopy[0][0].length(),filesToCopy[0][0].length()); fileName[filesToCopy[0][0].length()]='\0'; ::MultiByteToWideChar( CP_ACP, NULL,fileName, -1, fileNameW, MAX_PATH); m_text1.SetText(fileNameW); } } //---------------------------------------------------------------------------------- // Corta los ficheros //---------------------------------------------------------------------------------- VOID CutFiles() { LPSTR fileName = new char[MAX_PATH]; //Nombre del fichero int cont = 0; for (int i=0; i<m_list2.GetItemCount(); i++) { if (m_list2.GetItemCheck(i) == TRUE ) { //Convierte el nombre del fichero a caracteres ::WideCharToMultiByte(CP_ACP,NULL,m_list2.GetText(i),-1,fileName,MAX_PATH,NULL,NULL); //Añade el nombre del fichero al directorio Actual filesToMove[cont][0]+= directorioActual; filesToMove[cont][0]+= "\\"; filesToMove[cont][0]+= fileName; filesToCopy[cont][0]+= '\0'; cont++; } } filesToMove[cont][0].clear(); filesToCopy[0][0].clear(); } //---------------------------------------------------------------------------------- // Indica el progreso en la copia de ficheros //----------------------------------------------------------------------------------/* static DWORD CopyProgressRoutine( LARGE_INTEGER TotalFileSize, // file size LARGE_INTEGER TotalBytesTransferred, // bytes transferred LARGE_INTEGER StreamSize, // bytes in stream LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream DWORD dwStreamNumber, // current stream DWORD dwCallbackReason, // callback reason HANDLE hSourceFile, // handle to source file HANDLE hDestinationFile, // handle to destination file LPVOID lpData )// from CopyFileEx { int nValue = (TotalFileSize.QuadPart / TotalBytesTransferred.QuadPart) * 100; m_progressBar1.std.SetValue(nValue); return 0; }*/ //---------------------------------------------------------------------------------- // Pega los ficheros //---------------------------------------------------------------------------------- VOID PasteFiles() { LPSTR fileName = new char[MAX_PATH]; //Nombre del fichero LPWSTR fileNameW = new wchar_t[MAX_PATH]; //Nombre del fichero caracteres anchos string sfileName; LPSTR origen; LPSTR destino; m_text2.SetOpacity(1); m_button1.SetOpacity(1); m_progressBar1.SetOpacity(1); int i = 0; if (filesToCopy[i][0] != "\0") { do{ //Inicializa la barra de progreso m_progressBar1.SetRange(0,100); m_progressBar1.SetValue(0); //Copia el nombre del directorio actual filesToCopy[i][1] = directorioActual; //Se obtiene la posicion de la ultima barra del directorio actual size_t pos = filesToCopy[i][0].find_last_of("\\"); //Extrae el nombre del fichero sfileName = filesToCopy[i][0].substr( pos, filesToCopy[i][0].length() ); //Copiar el nombre del fichero a un puntero sfileName._Copy_s(fileName, sfileName.length(),sfileName.length()); //Añade el nombre del fichero al directorio destino filesToCopy[i][1]+=sfileName; filesToCopy[i][1]+='\0'; //Convierte el nombre del fichero a caracteres anchos ::MultiByteToWideChar( CP_ACP, NULL,fileName, -1, fileNameW, MAX_PATH); //Se muestra el nombre en el boton de la barra de progreso m_text2.SetText(fileNameW); //Copia el directorio al puntero directorio filesToCopy[i][0]._Copy_s(origen, filesToCopy[i][0].length(),filesToCopy[i][0].length()); origen[filesToCopy[i][0].length()]='\0'; //Copia el directorio al puntero directorio filesToCopy[i][1]._Copy_s(destino, filesToCopy[i][1].length(),filesToCopy[i][1].length()); destino[filesToCopy[i][1].length()]='\0'; CopyFileEx( origen, // name of existing file destino, // name of new file NULL,//CopyProgressRoutine, // callback function NULL, // callback parameter NULL, // cancel status COPY_FILE_FAIL_IF_EXISTS // copy options ); }while (filesToCopy[i][0] != "\0"); } else if (filesToCopy[i][0] != "\0") { do{ }while (filesToCopy[i][0] != "\0"); } m_button1.SetOpacity(0); m_text2.SetOpacity(0); m_progressBar1.SetOpacity(0); } //---------------------------------------------------------------------------------- // Borra los ficheros //---------------------------------------------------------------------------------- VOID DeleteFiles() { } //---------------------------------------------------------------------------------- // Crea un directorio //---------------------------------------------------------------------------------- VOID CreateDir() { } //---------------------------------------------------------------------------------- // Carga el fondo de pantalla //---------------------------------------------------------------------------------- VOID CargarFondo() { LPWSTR fondoW = L"file://game:/media/nxebg.jpg"; m_image1.SetImagePath(fondoW); m_text1.SetText(fondoW); }public: // Define the class. The class name must match the ClassOverride property // set for the scene in the UI Authoring tool. XUI_IMPLEMENT_CLASS( CMyMainScene, L"MyMainScene", XUI_CLASS_SCENE )};//--------------------------------------------------------------------------------------// Main XUI host class. It is responsible for registering scene classes and provide// basic initialization, scene loading and rendering capability.//--------------------------------------------------------------------------------------class CMyApp : public CXuiModule{protected: // Override RegisterXuiClasses so that CMyApp can register classes. virtual HRESULT RegisterXuiClasses(); // Override UnregisterXuiClasses so that CMyApp can unregister classes. virtual HRESULT UnregisterXuiClasses();};//--------------------------------------------------------------------------------------// Name: RegisterXuiClasses// Desc: Registers all the scene classes.//--------------------------------------------------------------------------------------HRESULT CMyApp::RegisterXuiClasses(){ return CMyMainScene::Register();}//--------------------------------------------------------------------------------------// Name: UnregisterXuiClasses// Desc: Unregisters all the scene classes.//--------------------------------------------------------------------------------------HRESULT CMyApp::UnregisterXuiClasses(){ CMyMainScene::Unregister(); return S_OK;}//--------------------------------------------------------------------------------------// Name: main// Desc: Application entry point.//--------------------------------------------------------------------------------------VOID __cdecl main(){ // Declare an instance of the XUI framework application. CMyApp app; // Initialize the application. HRESULT hr = app.Init( XuiD3DXTextureLoader ); if( FAILED( hr ) ) { OutputDebugString( "Failed intializing application.\n" ); return; } // Register a default typeface hr = app.RegisterDefaultTypeface( L"Arial Unicode MS", L"file://game:/media/xarialuni.ttf" ); if( FAILED( hr ) ) { OutputDebugString( "Failed to register default typeface.\n" ); return; } // Load the skin file used for the scene. app.LoadSkin( L"file://game:/media/simplescene.xzp#Media\\xui\\simple_scene_skin.xur" ); // Load the scene. app.LoadFirstScene( L"file://game:/media/simplescene.xzp#Media\\xui\\", L"simple_scene.xur", NULL ); // Run the scene. app.Run(); // Free resources, unregister custom classes, and exit. app.Uninit();} file proyect:http://rapidshare.com/files/328492494/XuiTutorial.rar.html Happy new Year.