bool ATVersion::GetAppVersion(const char *appName, std::string &version) { std::list<unsigned long> pids; version = ""; if (IsAppRunning(appName, pids)) { for (std::list<unsigned long>::iterator iter = pids.begin(); iter != pids.end(); iter++) { std::string path = GetAppPathByPid(*iter); if (!path.empty()) { version = GetProcessVersion(path); return true; } } } version = GetProcessVersion(ATVersion::appSearchPath + appName); if (version.empty()) { version = GetProcessVersion(appName); } return false; }
VOID WINAPI GetSystemInfoInternal(IN PSYSTEM_BASIC_INFORMATION BasicInfo, IN PSYSTEM_PROCESSOR_INFORMATION ProcInfo, OUT LPSYSTEM_INFO SystemInfo) { RtlZeroMemory(SystemInfo, sizeof (SYSTEM_INFO)); SystemInfo->wProcessorArchitecture = ProcInfo->ProcessorArchitecture; SystemInfo->wReserved = 0; SystemInfo->dwPageSize = BasicInfo->PageSize; SystemInfo->lpMinimumApplicationAddress = (PVOID)BasicInfo->MinimumUserModeAddress; SystemInfo->lpMaximumApplicationAddress = (PVOID)BasicInfo->MaximumUserModeAddress; SystemInfo->dwActiveProcessorMask = BasicInfo->ActiveProcessorsAffinityMask; SystemInfo->dwNumberOfProcessors = BasicInfo->NumberOfProcessors; SystemInfo->wProcessorLevel = ProcInfo->ProcessorLevel; SystemInfo->wProcessorRevision = ProcInfo->ProcessorRevision; SystemInfo->dwAllocationGranularity = BasicInfo->AllocationGranularity; switch (ProcInfo->ProcessorArchitecture) { case PROCESSOR_ARCHITECTURE_INTEL: switch (ProcInfo->ProcessorLevel) { case 3: SystemInfo->dwProcessorType = PROCESSOR_INTEL_386; break; case 4: SystemInfo->dwProcessorType = PROCESSOR_INTEL_486; break; default: SystemInfo->dwProcessorType = PROCESSOR_INTEL_PENTIUM; } break; case PROCESSOR_ARCHITECTURE_AMD64: SystemInfo->dwProcessorType = PROCESSOR_AMD_X8664; break; case PROCESSOR_ARCHITECTURE_IA64: SystemInfo->dwProcessorType = PROCESSOR_INTEL_IA64; break; default: SystemInfo->dwProcessorType = 0; break; } if (PV_NT351 > GetProcessVersion(0)) { SystemInfo->wProcessorLevel = 0; SystemInfo->wProcessorRevision = 0; } }
// Initialization code AUX_DATA::AUX_DATA() { // Cache various target platform version information DWORD dwVersion = ::GetVersion(); nWinVer = (LOBYTE(dwVersion) << 8) + HIBYTE(dwVersion); bWin95 = (dwVersion & 0x80000000) != 0; bWin4 = (BYTE)dwVersion >= 4; bNotWin4 = 1 - bWin4; // for convenience bSmCaption = bWin4; bMarked4 = FALSE; // determine various metrics based on EXE subsystem version mark if (bWin4) bMarked4 = (GetProcessVersion(0) >= 0x00040000); // Cached system metrics (updated in CWnd::OnWinIniChange) UpdateSysMetrics(); // Cached system values (updated in CWnd::OnSysColorChange) hbrBtnFace = NULL; UpdateSysColors(); // Standard cursors hcurWait = ::LoadCursor(NULL, IDC_WAIT); hcurArrow = ::LoadCursor(NULL, IDC_ARROW); ASSERT(hcurWait != NULL); ASSERT(hcurArrow != NULL); hcurHelp = NULL; // loaded on demand // cxBorder2 and cyBorder are 2x borders for Win4 cxBorder2 = bWin4 ? CX_BORDER*2 : CX_BORDER; cyBorder2 = bWin4 ? CY_BORDER*2 : CY_BORDER; // allocated on demand hbmMenuDot = NULL; hcurHelp = NULL; }
bool XWinProcessLauncher::IsRunning() { if(!fWaitClosingChildProcess) { if(fProcessID!= 0 && fIsRunning) { fIsRunning = GetProcessVersion(fProcessID) != 0;// Does this work *every* time? if (!fIsRunning) { if (fCanGetExitStatus) { GetExitCodeProcess(fProcInfo.hProcess, &fExitStatus); CloseHandle(fProcInfo.hProcess); CloseHandle(fProcInfo.hThread); } } } } return fIsRunning; }
int main( int argc, char *argv[] ) { QApplication::setColorSpec( QApplication::ManyColor ); DesignerApplication a( argc, argv ); DesignerApplication::setOverrideCursor( Qt::WaitCursor ); bool creatPid = FALSE; if ( a.argc() > 1 ) { QString arg1 = a.argv()[ 1 ]; if ( arg1 == "-client" ) { QFile pf( QDir::homeDirPath() + "/.designerpid" ); if ( pf.exists() && pf.open( IO_ReadOnly ) ) { QString pidStr; pf.readLine( pidStr, pf.size() ); QFile f( QDir::homeDirPath() + "/.designerargs" ); f.open( IO_WriteOnly ); QTextStream ts( &f ); for ( int i = 1; i < a.argc(); ++i ) ts << a.argv()[ i ] << " "; ts << endl; f.close(); #if defined(Q_OS_UNIX) if ( kill( pidStr.toInt(), SIGUSR1 ) == -1 ) creatPid = TRUE; else return 0; #elif defined(Q_OS_WIN32) if ( !GetProcessVersion( pidStr.toUInt() ) ) { creatPid = TRUE; } else { if ( a.winVersion() & Qt::WV_NT_based ) SendMessage( HWND_BROADCAST, RegisterWindowMessage((TCHAR*)"QT_DESIGNER_OPEN_FILE"), 0, 0 ); else SendMessage( HWND_BROADCAST, RegisterWindowMessageA("QT_DESIGNER_OPEN_FILE"), 0, 0 ); return 0; } #endif } else { creatPid = TRUE; } } else if(arg1 == "-debug_stderr") { extern bool debugToStderr; //outputwindow.cpp debugToStderr = TRUE; } } if ( creatPid ) { QFile pf( QDir::homeDirPath() + "/.designerpid" ); pf.open( IO_WriteOnly ); QTextStream ts( &pf ); #if defined(Q_OS_UNIX) signal( SIGUSR1, signalHandler ); #endif ts << getpid() << endl; pf.close(); signal( SIGABRT, exitHandler ); signal( SIGFPE, exitHandler ); signal( SIGILL, exitHandler ); signal( SIGINT, exitHandler ); signal( SIGSEGV, exitHandler ); signal( SIGTERM, exitHandler ); } extern void qInitImages_designercore(); qInitImages_designercore(); QSettings config; QString keybase = DesignerApplication::settingsKey(); config.insertSearchPath( QSettings::Windows, "/Trolltech" ); QStringList pluginPaths = config.readListEntry( keybase + "PluginPaths" ); if (pluginPaths.count()) QApplication::setLibraryPaths(pluginPaths); QSplashScreen *splash = a.showSplash(); MainWindow *mw = new MainWindow( creatPid ); a.setMainWidget( mw ); #if defined(QT_NON_COMMERCIAL) mw->setCaption( "Qt Designer by Trolltech for non-commercial use" ); #else mw->setCaption( "Qt Designer by Trolltech" ); #endif if ( config.readBoolEntry( keybase + "Geometries/MainwindowMaximized", FALSE ) ) { int x = config.readNumEntry( keybase + "Geometries/MainwindowX", 0 ); int y = config.readNumEntry( keybase + "Geometries/MainwindowY", 0 ); mw->move( x, y ); mw->showMaximized(); } else { mw->show(); } if ( splash ) splash->finish( mw ); delete splash; QApplication::restoreOverrideCursor(); for ( int i = 1; i < a.argc(); ++i ) { QString arg = a.argv()[ i ]; if ( arg[0] != '-' ) mw->fileOpen( "", "", arg ); } return a.exec(); }
bool isProcessAlive(U32 pid) { return (bool) GetProcessVersion((DWORD)pid); }
int main(int argc, char *argv[]) { QApplication::setColorSpec(QApplication::ManyColor); DesignerApplication a(argc, argv); DesignerApplication::setOverrideCursor(Qt::WaitCursor); bool creatPid = FALSE; if (a.argc() > 1) { QString arg1 = a.argv()[ 1 ]; if (arg1 == "-client") { QFile pf(QDir::homeDirPath() + "/.designerpid"); if (pf.exists() && pf.open(IO_ReadOnly)) { QString pidStr; pf.readLine(pidStr, pf.size()); QFile f(QDir::homeDirPath() + "/.designerargs"); f.open(IO_WriteOnly); QTextStream ts(&f); for (int i = 1; i < a.argc(); ++i) ts << a.argv()[ i ] << " "; ts << endl; f.close(); #if defined(Q_OS_UNIX) if (kill(pidStr.toInt(), SIGUSR1) == -1) creatPid = TRUE; else return 0; #elif defined(Q_OS_WIN32) if (!GetProcessVersion(pidStr.toUInt())) { creatPid = TRUE; } else { if (a.winVersion() & Qt::WV_NT_based) SendMessage(HWND_BROADCAST, RegisterWindowMessage((TCHAR *)"QT_DESIGNER_OPEN_FILE"), 0, 0); else SendMessage(HWND_BROADCAST, RegisterWindowMessageA("QT_DESIGNER_OPEN_FILE"), 0, 0); return 0; } #endif } else { creatPid = TRUE; } } else if (arg1 == "-debug_stderr") { extern bool debugToStderr; //outputwindow.cpp debugToStderr = TRUE; } } if (creatPid) { QFile pf(QDir::homeDirPath() + "/.designerpid"); pf.open(IO_WriteOnly); QTextStream ts(&pf); #if defined(Q_OS_UNIX) signal(SIGUSR1, signalHandler); #endif ts << getpid() << endl; pf.close(); signal(SIGABRT, exitHandler); signal(SIGFPE, exitHandler); signal(SIGILL, exitHandler); signal(SIGINT, exitHandler); signal(SIGSEGV, exitHandler); signal(SIGTERM, exitHandler); } extern void qInitImages_designercore(); qInitImages_designercore(); QSettings settings; settings.setPath("InfoSiAL", "AbanQ", QSettings::User); QFont appFont; QString keybase("AbanQ/"); #if defined (Q_OS_LINUX) QPaintDeviceMetrics pdm(QApplication::desktop()); float relDpi; if (pdm.logicalDpiX() < pdm.logicalDpiY()) relDpi = 78. / pdm.logicalDpiY(); else relDpi = 78. / pdm.logicalDpiX(); int pointSize = 10 * relDpi; #else int pointSize = 10; #endif #if defined(Q_OS_WIN32) appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Tahoma")); pointSize = 8; #else #if defined(Q_OS_MACX) appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Lucida Grande")); pointSize = 10; #else appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Sans")); #endif #endif appFont.setPointSize(settings.readNumEntry(keybase + "fuente/puntos", pointSize)); appFont.setBold(settings.readBoolEntry(keybase + "fuente/negrita", false)); appFont.setItalic(settings.readBoolEntry(keybase + "fuente/cursiva", false)); appFont.setUnderline(settings.readBoolEntry(keybase + "fuente/subrayado", false)); appFont.setStrikeOut(settings.readBoolEntry(keybase + "fuente/tachado", false)); a.setFont(appFont); #if defined(Q_OS_WIN32) a.setStyle(settings.readEntry(keybase + "estilo", "Bluecurve")); #else a.setStyle(settings.readEntry(keybase + "estilo", "Plastik")); #endif keybase = DesignerApplication::settingsKey(); QSettings config; config.insertSearchPath(QSettings::Windows, "/Trolltech"); QStringList pluginPaths = config.readListEntry(keybase + "PluginPaths"); pluginPaths << QString(qApp->applicationDirPath() + "/../plugins"); if (pluginPaths.count()) QApplication::setLibraryPaths(pluginPaths); QSplashScreen *splash = a.showSplash(); MainWindow *mw = new MainWindow(creatPid); a.setMainWidget(mw); #if defined(QT_NON_COMMERCIAL) mw->setCaption("Qt Designer by Trolltech for non-commercial use"); #else mw->setCaption("Qt Designer by Trolltech"); #endif if (config.readBoolEntry(keybase + "Geometries/MainwindowMaximized", FALSE)) { int x = config.readNumEntry(keybase + "Geometries/MainwindowX", 0); int y = config.readNumEntry(keybase + "Geometries/MainwindowY", 0); mw->move(x, y); mw->showMaximized(); } else { mw->show(); } if (splash) splash->finish(mw); delete splash; QApplication::restoreOverrideCursor(); for (int i = 1; i < a.argc(); ++i) { QString arg = a.argv()[ i ]; if (arg[0] != '-') mw->fileOpen("", "", arg); } return a.exec(); }