Beispiel #1
0
HRESULT SetCurrentUserPermissions()
{
    HRESULT     hr = E_FAIL;
    WCHAR       wzLocalGACPath[MAX_PATH];
    LPWSTR      pwzFileName;
    DWORD       dwAttr;

    // Executed on PROCESS_ATTACH - no need to lock here

    if (FAILED(GetCacheLocationFromReg()))
    {
        if (!PAL_GetMachineConfigurationDirectory(g_szWindowsDir, NUMBER_OF(g_szWindowsDir)))
        {
            hr = FusionpHresultFromLastError();
            goto Exit;
        }

        g_cchWindowsDir = lstrlen(g_szWindowsDir);
    }

    // Override registry setting if there is an "fusion.localgac" file
    // under the path where fusion.dll is found
    lstrcpyW(wzLocalGACPath, g_FusionDllPath);
    pwzFileName = PathFindFileName(wzLocalGACPath);
    ASSERT(pwzFileName);
    *pwzFileName = '\0';

    wnsprintfW(wzLocalGACPath, MAX_PATH, L"%s%s", wzLocalGACPath, FUSION_LOCAL_GAC_FILE);
    dwAttr = GetFileAttributes(wzLocalGACPath);
    if (dwAttr != (DWORD) -1 && !(dwAttr & FILE_ATTRIBUTE_DIRECTORY)) {
        *(pwzFileName - 1) = '\0';
        lstrcpyW(g_szWindowsDir, wzLocalGACPath);
        g_cchWindowsDir = lstrlenW(g_szWindowsDir);
    }

    // Woah, the windows dir is longer than MAX_PATH??
    ASSERT((g_cchWindowsDir + TEMP_RANDOM_DIR_LENGTH) < NUMBER_OF(g_szWindowsDir));

    if (g_cchWindowsDir == 0)
    {
        hr = FusionpHresultFromLastError();
        goto Exit;
    }

    // SetGACDir();
    // SetZapDir();


Exit:
    return hr;
}
Beispiel #2
0
static void
debug_printf(LPCTSTR format, ...)
{
	va_list va;
	TCHAR buf[80*25];

	va_start(va, format);
	_vsntprintf(buf, NUMBER_OF(buf), format, va);
	buf[NUMBER_OF(buf) - 1] = T('\0');
	va_end(va);

	SendMessage(g_DebugWindow, EM_REPLACESEL, 0, (LPARAM)buf);
	SendMessage(g_DebugWindow, EM_REPLACESEL, 0, (LPARAM)T("\r\n"));
}
Beispiel #3
0
/// get class name and title name
static void getClassNameTitleName(HWND i_hwnd, bool i_isInMenu,
                                  tstringi *o_className,
                                  tstring *o_titleName)
{
    tstringi &className = *o_className;
    tstring &titleName = *o_titleName;

    bool isTheFirstTime = true;

    if (i_isInMenu) {
        className = titleName = _T("MENU");
        isTheFirstTime = false;
    }

    while (true) {
        _TCHAR buf[MAX(GANA_MAX_PATH, GANA_MAX_ATOM_LENGTH)];

        // get class name
        if (i_hwnd)
            GetClassName(i_hwnd, buf, NUMBER_OF(buf));
        else
            GetModuleFileName(GetModuleHandle(NULL), buf, NUMBER_OF(buf));
        buf[NUMBER_OF(buf) - 1] = _T('\0');
        if (isTheFirstTime)
            className = buf;
        else
            className = tstringi(buf) + _T(":") + className;

        // get title name
        if (i_hwnd) {
            GetWindowText(i_hwnd, buf, NUMBER_OF(buf));
            buf[NUMBER_OF(buf) - 1] = _T('\0');
            for (_TCHAR *b = buf; *b; ++ b)
                if (_istlead(*b) && b[1])
                    b ++;
                else if (_istcntrl(*b))
                    *b = _T('?');
        }
        if (isTheFirstTime)
            titleName = buf;
        else
            titleName = tstring(buf) + _T(":") + titleName;

        // next loop or exit
        if (!i_hwnd)
            break;
        i_hwnd = GetParent(i_hwnd);
        isTheFirstTime = false;
    }
}
Beispiel #4
0
/// &Recenter
static void funcRecenter(HWND i_hwnd)
{
    _TCHAR buf[MAX(GANA_MAX_PATH, GANA_MAX_ATOM_LENGTH)];
    GetClassName(i_hwnd, buf, NUMBER_OF(buf));
    bool isEdit;
    if (_tcsicmp(buf, _T("Edit")) == 0)
        isEdit = true;
    else if (_tcsnicmp(buf, _T("RichEdit"), 8) == 0)
        isEdit = false;
    else
        return;	// this function only works for Edit control

#ifdef MAYU64
    LONG_PTR style = GetWindowLongPtr(i_hwnd, GWL_STYLE);
#else
    LONG style = GetWindowLong(i_hwnd, GWL_STYLE);
#endif
    if (!(style & ES_MULTILINE))
        return;	// this function only works for multi line Edit control

    RECT rc;
    GetClientRect(i_hwnd, &rc);
    POINTL p = { (rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2 };
    int line;
    if (isEdit) {
        line = SendMessage(i_hwnd, EM_CHARFROMPOS, 0, MAKELPARAM(p.x, p.y));
        line = HIWORD(line);
    } else {
        int ci = SendMessage(i_hwnd, EM_CHARFROMPOS, 0, (LPARAM)&p);
        line = SendMessage(i_hwnd, EM_EXLINEFROMCHAR, 0, ci);
    }
    int caretLine = SendMessage(i_hwnd, EM_LINEFROMCHAR, -1, 0);
    SendMessage(i_hwnd, EM_LINESCROLL, 0, caretLine - line);
}
Beispiel #5
0
/// notify log
static void notifyLog(_TCHAR *i_msg)
{
    NotifyLog nl;
    nl.m_type = Notify::Type_log;
    tcslcpy(nl.m_msg, i_msg, NUMBER_OF(nl.m_msg));
    notify(&nl, sizeof(nl));
}
Beispiel #6
0
/// notify WM_Targetted
static void notifyName(HWND i_hwnd, Notify::Type i_type = Notify::Type_name)
{
    tstringi className;
    tstring titleName;
    getClassNameTitleName(i_hwnd, g.m_isInMenu, &className, &titleName);

    NotifySetFocus *nfc = new NotifySetFocus;
    nfc->m_type = i_type;
    nfc->m_threadId = GetCurrentThreadId();
    nfc->m_hwnd = reinterpret_cast<DWORD>(i_hwnd);
    tcslcpy(nfc->m_className, className.c_str(), NUMBER_OF(nfc->m_className));
    tcslcpy(nfc->m_titleName, titleName.c_str(), NUMBER_OF(nfc->m_titleName));

    notify(nfc, sizeof(*nfc));
    delete nfc;
}
Beispiel #7
0
// get filename from registry
bool SettingLoader::getFilenameFromRegistry(tstringi *o_path) const
{
	// get from registry
	Registry reg(MAYU_REGISTRY_ROOT);
	int index;
	reg.read(_T(".mayuIndex"), &index, 0);
	char buf[100];
	snprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);
	if (!reg.read(buf, o_path))
		return false;

	// parse registry entry
	Regexp getFilename(_T("^[^;]*;([^;]*);(.*)$"));
	if (!getFilename.doesMatch(*o_path))
		return false;

	tstringi path = getFilename[1];
	tstringi options = getFilename[2];

	if (!(0 < path.size() && isReadable(path)))
		return false;
	*o_path = path;

	// set symbols
	Regexp symbol(_T("-D([^;]*)"));
	while (symbol.doesMatch(options)) {
		m_setting->symbols.insert(symbol[1]);
		options = options.substr(symbol.subBegin(1));
	}

	return true;
}
Beispiel #8
0
void tooltip_update (NMTTDISPINFO* di, control* c)
{
	if ((c == NULL) || (!tooltip_enabled))
		return;

	if (di->hdr.hwndFrom == tooltip_window) {
		if (di->hdr.code == TTN_GETDISPINFO) {
			char buf[225];
			window* w = c->windowptr;
			sprintf(buf,"%s:%s [%d,%d] @ (%d,%d)",c->moduleptr->name,c->controlname, w->width, w->height, w->x, w->y);
			strncpy( di->szText, buf,
			         NUMBER_OF(di->szText) );
			di->szText[NUMBER_OF(di->szText) - 1] = '\0';
		}
	}
}
Beispiel #9
0
// get mayu filename
static bool getFilenameFromRegistry(
	tstringi *o_name, tstringi *o_filename, Setting::Symbols *o_symbols)
{
	Registry reg(MAYU_REGISTRY_ROOT);
	int index;
	reg.read(_T(".mayuIndex"), &index, 0);
	_TCHAR buf[100];
	_sntprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);

	tstringi entry;
	if (!reg.read(buf, &entry))
		return false;

	tregex getFilename(_T("^([^;]*);([^;]*);(.*)$"));
	tsmatch getFilenameResult;
	if (!boost::regex_match(entry, getFilenameResult, getFilename))
		return false;

	if (o_name)
		*o_name = getFilenameResult.str(1);
	if (o_filename)
		*o_filename = getFilenameResult.str(2);
	if (o_symbols) {
		tstringi symbols = getFilenameResult.str(3);
		tregex symbol(_T("-D([^;]*)(.*)$"));
		tsmatch symbolResult;
		while (boost::regex_search(symbols, symbolResult, symbol)) {
			o_symbols->insert(symbolResult.str(1));
			symbols = symbolResult.str(2);
		}
	}
	return true;
}
Beispiel #10
0
Datei: enum.c Projekt: jaykrell/j
PCWSTR
GetSpaces(
    size_t Count
    )
{
    static const WCHAR Spaces[] = {
L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',
L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',
L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',
L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ',
        0
    };
    C_ASSERT(NUMBER_OF(Spaces) == 65);
    if (Count > (NUMBER_OF(Spaces) - 1))
        Count = (NUMBER_OF(Spaces) - 1);
    return (Spaces + NUMBER_OF(Spaces) - 1 - Count);
}
// get compiler version string
tstring getCompilerVersionString()
{
  TCHAR buf[200];
  _sntprintf(buf, NUMBER_OF(buf),
	     _T("GCC")				// TODO:
			 );
  return tstring(buf);
}
Beispiel #12
0
// load resource string
tstring loadString(UINT i_id)
{
    _TCHAR buf[1024];
    if (LoadString(g_hInst, i_id, buf, NUMBER_OF(buf)))
        return tstring(buf);
    else
        return _T("");
}
// get compiler version string
tstring getCompilerVersionString()
{
  TCHAR buf[200];
  _sntprintf(buf, NUMBER_OF(buf),
	     _T("Microsoft (R) 32-bit C/C++ Optimizing Compiler Version %d.%02d"),
	     _MSC_VER / 100,
	     _MSC_VER % 100);
  return tstring(buf);
}
// get compiler version string
tstring getCompilerVersionString()
{
  TCHAR buf[100];
  _sntprintf(buf, NUMBER_OF(buf), _T("Borland C++ %d.%d.%d"),
	     __BORLANDC__ / 0x100,
	     __BORLANDC__ / 0x10 % 0x10,
	     __BORLANDC__ % 0x10);
  return tstring(buf);
}
Beispiel #15
0
Datei: enum.c Projekt: jaykrell/j
BOOL
CALLBACK
EnumLangProc(
    HMODULE Module,
    PCWSTR Type,
    PCWSTR Name,
    WORD   Language,
    LONG   Param
    )
{
    WCHAR TypeBuffer[20];
    WCHAR NameBuffer[20];
    wprintf(
        L"module:%p type:%ls name:%ls lang:%x\n",
        Module,
        IdToString(Type, TypeBuffer, NUMBER_OF(TypeBuffer)),
        IdToString(Name, NameBuffer, NUMBER_OF(NameBuffer)),
        Language);
    return TRUE;
}
Beispiel #16
0
static void WriteToLog(const char *data)
{
    char buf[1024];
    DWORD count;

    WideCharToMultiByte(CP_THREAD_ACP, 0, g.m_moduleName, -1, buf, NUMBER_OF(buf), NULL, NULL);
    strcat(buf, ": ");
    strcat(buf, data);
    SetFilePointer(g.m_logFile, 0, NULL, FILE_END);
    WriteFile(g.m_logFile, buf, strlen(buf), &count, NULL);
    FlushFileBuffers(g.m_logFile);
}
Beispiel #17
0
static
bool F_Parse_INI_and_Load_Packages( PCHARS szProjFilePath )
{
	AssertPtr( szProjFilePath );

	// Parse .INI file and load resource packages.

	ANSICHAR	iniFilePath[ FS_MAX_PATH ];
	VRET_FALSE_IF_NOT( F_Compose_File_Path( szProjFilePath, iniFilePath, NUMBER_OF(iniFilePath) ) );

	FileReader	iniFileReader( iniFilePath, FileRead_NoErrors );

	if( !iniFileReader.IsOpen() ) {
		mxWarnf("Failed to load config file '%s'\n",iniFilePath);
		return false;
	}

	// 1 KiB
	enum { MAX_INI_SIZE = 1*mxKIBIBYTE};

	const UINT fileSize = iniFileReader.GetSize();

	if( fileSize > MAX_INI_SIZE )
	{
		mxWarnf("Config file '%s' is too big\n",iniFilePath);
		return false;
	}

	ANSICHAR	buffer[ MAX_INI_SIZE ];
	MemZero( buffer, sizeof buffer );
	iniFileReader.Read( buffer, fileSize );

	idLexer		lexer( buffer, fileSize, iniFilePath, LEXFL_ALLOWPATHNAMES|LEXFL_NOSTRINGCONCAT );
	idToken		token;
	while( lexer.ReadToken( &token ) )
	{
		if( token == "[" ) {
			lexer.ExpectAnyToken( &token );
			lexer.ExpectTokenString("]");
			continue;
		}
		if( token.type == TT_STRING ) {
			UNDONE;
			//F_MountExistingPackage( token.ToChars() );
			continue;
		} else {
			lexer.Error("Expected a string, but got '%s'\n",token.ToChars());
		}
		return false;
	}//while (ReadToken)

	return true;
}
Beispiel #18
0
/// stream output
tostream &operator<<(tostream &i_ost, Modifier::Type i_type)
{
	const _TCHAR *modNames[] = {
		_T("Shift"),
		_T("Alt"),
		_T("Control"),
		_T("Windows"),
		_T("Up"),
		_T("Down"),
		_T("Repeat"),
		_T("ImeLock"),
		_T("ImeComp"),
		_T("NumLock"),
		_T("CapsLock"),
		_T("ScrollLock"),
		_T("KanaLock"),
		_T("Maximized"),
		_T("Minimized"),
		_T("MdiMaximized"),
		_T("MdiMinimized"),
		_T("Touchpad"),
		_T("TouchpadSticky"),
		_T("Mod0"),
		_T("Mod1"),
		_T("Mod2"),
		_T("Mod3"),
		_T("Mod4"),
		_T("Mod5"),
		_T("Mod6"),
		_T("Mod7"),
		_T("Mod8"),
		_T("Mod9"),
		_T("Lock0"),
		_T("Lock1"),
		_T("Lock2"),
		_T("Lock3"),
		_T("Lock4"),
		_T("Lock5"),
		_T("Lock6"),
		_T("Lock7"),
		_T("Lock8"),
		_T("Lock9"),
	};

	int i = static_cast<int>(i_type);
	if (0 <= i && i < NUMBER_OF(modNames))
		i_ost << modNames[i];

	return i_ost;
}
Beispiel #19
0
// stream output
tostream &operator<<(tostream &i_ost, const Modifier &i_m)
{
	struct Mods {
		Modifier::Type m_mt;
		const _TCHAR *m_symbol;
	};

	const static Mods mods[] = {
		{ Modifier::Type_Up, _T("U-") }, { Modifier::Type_Down, _T("D-") },
		{ Modifier::Type_Shift, _T("S-") }, { Modifier::Type_Alt, _T("A-") },
		{ Modifier::Type_Control, _T("C-") }, { Modifier::Type_Windows, _T("W-") },
		{ Modifier::Type_Repeat, _T("R-") },
		{ Modifier::Type_ImeLock, _T("IL-") },
		{ Modifier::Type_ImeComp, _T("IC-") },
		{ Modifier::Type_ImeComp, _T("I-") },
		{ Modifier::Type_NumLock, _T("NL-") },
		{ Modifier::Type_CapsLock, _T("CL-") },
		{ Modifier::Type_ScrollLock, _T("SL-") },
		{ Modifier::Type_KanaLock, _T("KL-") },
		{ Modifier::Type_Maximized, _T("MAX-") },
		{ Modifier::Type_Minimized, _T("MIN-") },
		{ Modifier::Type_MdiMaximized, _T("MMAX-") },
		{ Modifier::Type_MdiMinimized, _T("MMIN-") },
		{ Modifier::Type_Touchpad, _T("T-") },
		{ Modifier::Type_TouchpadSticky, _T("TS-") },
		{ Modifier::Type_Mod0, _T("M0-") }, { Modifier::Type_Mod1, _T("M1-") },
		{ Modifier::Type_Mod2, _T("M2-") }, { Modifier::Type_Mod3, _T("M3-") },
		{ Modifier::Type_Mod4, _T("M4-") }, { Modifier::Type_Mod5, _T("M5-") },
		{ Modifier::Type_Mod6, _T("M6-") }, { Modifier::Type_Mod7, _T("M7-") },
		{ Modifier::Type_Mod8, _T("M8-") }, { Modifier::Type_Mod9, _T("M9-") },
		{ Modifier::Type_Lock0, _T("L0-") }, { Modifier::Type_Lock1, _T("L1-") },
		{ Modifier::Type_Lock2, _T("L2-") }, { Modifier::Type_Lock3, _T("L3-") },
		{ Modifier::Type_Lock4, _T("L4-") }, { Modifier::Type_Lock5, _T("L5-") },
		{ Modifier::Type_Lock6, _T("L6-") }, { Modifier::Type_Lock7, _T("L7-") },
		{ Modifier::Type_Lock8, _T("L8-") }, { Modifier::Type_Lock9, _T("L9-") },
	};

	for (size_t i = 0; i < NUMBER_OF(mods); ++ i)
		if (!i_m.isDontcare(mods[i].m_mt) && i_m.isPressed(mods[i].m_mt))
			i_ost << mods[i].m_symbol;
#if 0
		else if (!i_m.isDontcare(mods[i].m_mt) && i_m.isPressed(mods[i].m_mt))
			i_ost << _T("~") << mods[i].m_symbol;
		else
			i_ost << _T("*") << mods[i].m_symbol;
#endif

	return i_ost;
}
Beispiel #20
0
// get home directory path
void getHomeDirectories(HomeDirectories *o_pathes)
{
	tstringi filename;
#ifndef USE_INI
	if (getFilenameFromRegistry(NULL, &filename, NULL) &&
			!filename.empty()) {
		tregex getPath(_T("^(.*[/\\\\])[^/\\\\]*$"));
		tsmatch getPathResult;
		if (boost::regex_match(filename, getPathResult, getPath))
			o_pathes->push_back(getPathResult.str(1));
	}

	const _TCHAR *home = _tgetenv(_T("HOME"));
	if (home)
		o_pathes->push_back(home);

	const _TCHAR *homedrive = _tgetenv(_T("HOMEDRIVE"));
	const _TCHAR *homepath = _tgetenv(_T("HOMEPATH"));
	if (homedrive && homepath)
		o_pathes->push_back(tstringi(homedrive) + homepath);

	const _TCHAR *userprofile = _tgetenv(_T("USERPROFILE"));
	if (userprofile)
		o_pathes->push_back(userprofile);

	_TCHAR buf[GANA_MAX_PATH];
	DWORD len = GetCurrentDirectory(NUMBER_OF(buf), buf);
	if (0 < len && len < NUMBER_OF(buf))
		o_pathes->push_back(buf);
#else //USE_INI
	_TCHAR buf[GANA_MAX_PATH];
#endif //USE_INI

	if (GetModuleFileName(GetModuleHandle(NULL), buf, NUMBER_OF(buf)))
		o_pathes->push_back(pathRemoveFileSpec(buf));
}
Beispiel #21
0
bool F_Compose_File_Path(PCHARS szProjFilePath, PCHARS fileExtensionWithDot,
						ANSICHAR (&destBuf)[BUF_SIZE])
{
	AssertPtr( szProjFilePath );
	AssertPtr( destBuf );
	StaticAssert( BUF_SIZE > 0 );

	// pure name (e.g. "MyProject")
	ANSICHAR	projName[ 128 ];
	V_FileBase( szProjFilePath, projName, NUMBER_OF(projName) );

	// path relative to exe (e.g. "Projects/MyProject/")
	ANSICHAR	projFilePath[ FS_MAX_PATH ];
	VRET_FALSE_IF_NOT( V_ExtractFilePath( szProjFilePath, projFilePath, NUMBER_OF(projFilePath) ) );

	// path to .INI file relative to exe (e.g. "Projects/MyProject/MyProject.INI")
	ANSICHAR	outFilePath[ FS_MAX_PATH ];
	V_ComposeFileName( projFilePath, projName, outFilePath, NUMBER_OF(outFilePath) );
	V_SetExtension( outFilePath, fileExtensionWithDot, NUMBER_OF(outFilePath) );

	mxStrCpyNAnsi( destBuf, outFilePath, NUMBER_OF(destBuf) );

	return true;
}
Beispiel #22
0
static TSTaskInfo*
TSTaskInfo_New(HWND hwnd, ULONG_PTR extra[], int extra_count)
{
	TSTaskInfo* self;

	self = malloc(sizeof(*self) + sizeof(extra[0]) * (extra_count-1));
	if (self == NULL)
		return NULL;

	self->window = hwnd;
	GetWindowText(hwnd, self->title, NUMBER_OF(self->title));
	if ((extra != NULL) && (0 < extra_count))
		memcpy(self->extra, extra, sizeof(extra[0]) * extra_count);

	return self;
}
Beispiel #23
0
bool initialize(bool i_isYamy)
{
#ifndef NDEBUG
    _TCHAR path[GANA_MAX_PATH];
    GetModuleFileName(NULL, path, GANA_MAX_PATH);
    _tsplitpath_s(path, NULL, 0, NULL, 0, g.m_moduleName, GANA_MAX_PATH, NULL, 0);
    if (_tcsnicmp(g.m_moduleName, _T("Dbgview"), sizeof(_T("Dbgview"))/sizeof(_TCHAR)) != 0 &&
            _tcsnicmp(g.m_moduleName, _T("windbg"), sizeof(_T("windbg"))/sizeof(_TCHAR)) != 0) {
        g.m_isLogging = true;
    }
#endif // !NDEBUG
#ifdef HOOK_LOG_TO_FILE
    _TCHAR logFileName[GANA_MAX_PATH];
    GetEnvironmentVariable(_T("USERPROFILE"), logFileName, NUMBER_OF(logFileName));
    _tcsncat(logFileName, _T("\\AppData\\LocalLow\\yamydll.txt"), _tcslen(_T("\\AppData\\LocalLow\\yamydll.log")));
    g.m_logFile = CreateFile(logFileName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                             OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
#endif // HOOK_LOG_TO_FILE
    WriteToLog("try to open mailslot\r\n");
    g.m_hMailslot =
        CreateFile(NOTIFY_MAILSLOT_NAME, GENERIC_WRITE,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   (SECURITY_ATTRIBUTES *)NULL, OPEN_EXISTING,
                   FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
    if (g.m_hMailslot == INVALID_HANDLE_VALUE) {
        HOOK_RPT2("MAYU: %S create mailslot failed(0x%08x)\r\n", g.m_moduleName, GetLastError());
        WriteToLog("open mailslot NG\r\n");
    } else {
        HOOK_RPT1("MAYU: %S create mailslot successed\r\n", g.m_moduleName);
        WriteToLog("open mailslot OK\r\n");
    }
    if (!mapHookData(i_isYamy))
        return false;
    _tsetlocale(LC_ALL, _T(""));
    g.m_WM_MAYU_MESSAGE =
        RegisterWindowMessage(addSessionId(WM_MAYU_MESSAGE_NAME).c_str());
    g.m_hwndTaskTray = g_hookData->m_hwndTaskTray;
    if (!i_isYamy) {
        NotifyThreadAttach ntd;
        ntd.m_type = Notify::Type_threadAttach;
        ntd.m_threadId = GetCurrentThreadId();
        notify(&ntd, sizeof(ntd));
    }
    g.m_isInitialized = true;
    return true;
}
Beispiel #24
0
/*
--------------------------------------------------------------
	BuildOptionsList
--------------------------------------------------------------
*/
void DevBuildOptionsList::ToChars( ANSICHAR *buffer, UINT maxChars )
{
	buffer[0] = nil;

	const UINT num = this->Num();

	for( UINT i=0; i < num; i++ )
	{
		ANSICHAR	temp[64];
		mxSPrintfAnsi(
			temp, NUMBER_OF(temp), "%s%s",
			(*this)[i], (i != num-1) ? ", " : ""
			);

		mxStrCatAnsi( buffer, temp );
	}
}
Beispiel #25
0
Modifier::Modifier()
		: m_modifiers(0),
		m_dontcares(0)
{
	ASSERT(Type_end <= (sizeof(MODIFIERS) * 8));
	static const Type defaultDontCare[] = {
		Type_Up, Type_Down, Type_Repeat,
		Type_ImeLock, Type_ImeComp, Type_NumLock, Type_CapsLock, Type_ScrollLock,
		Type_KanaLock,
		Type_Maximized, Type_Minimized, Type_MdiMaximized, Type_MdiMinimized,
		Type_Touchpad, Type_TouchpadSticky,
		Type_Lock0, Type_Lock1, Type_Lock2, Type_Lock3, Type_Lock4,
		Type_Lock5, Type_Lock6, Type_Lock7, Type_Lock8, Type_Lock9,
	};
	for (size_t i = 0; i < NUMBER_OF(defaultDontCare); ++ i)
		dontcare(defaultDontCare[i]);
}
Beispiel #26
0
int main(int argc, char* argv[], char* envp[])
{
	int i;
	const char *name;

	printf("Enum Days elements:\n");
	for (i = 0; i < 7; i++)
	{
		name = ENUM_NAME_AT(Days, i);
		if (name)
			printf("\t%d) %-10s\n", i, name);
	}

	printf("\nEnum Number elements:\n");
	for (i = 0; i < 11; i++)
	{
		int pos = ENUM_POS(Numbers, Numbers(i));
		if (pos >= 0) {
			name = ENUM_NAME(Numbers, Numbers(i));
			printf("\t%-10s:\t%d\n", name, i);
		} else {
			printf("    %d is not a valid item of Enum Numbers\n", i);
		}
	}

	printf("\nEnum Fruits elements:\n");
	Fruits value;
	for (i = 0; i < NUMBER_OF(Fruits); i++)
	{
		value = ENUM_VALUE_AT(Fruits, i);
		name = ENUM_NAME_AT(Fruits, i);
//		printf("\t%d) %-10s:\t%d\n", i, name, value);

		name = ENUM_NAME(Fruits, value);
		if (name)
		{
			value = ENUM_VALUE(Fruits, name);
			if (value != INVALID_ENUM_ITEM(Fruits))
				printf("\t%-10s:\t%d\n", name, value);
		}
	}

	return 0;
}
Beispiel #27
0
/*
 * getType:
 *
 * Returns a format/sub-format information. Taken from mp4.h/mp4info.
 */
static void getType(MP4FileHandle file, MP4TrackId trackId, const char **format, const char **subformat )
{
    unsigned i;
    const char *media_data_name = MP4GetTrackMediaDataName(file, trackId);

    *format = _("Audio");
    *subformat = _("Unknown");

    if (media_data_name == NULL)
    {
        ;
    } else if (strcasecmp(media_data_name, "samr") == 0)
    {
        *subformat = "AMR";
    } else if (strcasecmp(media_data_name, "sawb") == 0)
    {
        *subformat = "AMR-WB";
    } else if (strcasecmp(media_data_name, "mp4a") == 0)
    {
        u_int8_t type = MP4GetTrackEsdsObjectTypeId(file, trackId);

        if( type == MP4_MPEG4_AUDIO_TYPE )
        {
            u_int8_t* pAacConfig = NULL;
            u_int32_t aacConfigLength;

            MP4GetTrackESConfiguration(file, trackId, &pAacConfig, &aacConfigLength);

            if (pAacConfig != NULL)
            {
                type = aacConfigLength >= 2 ? ((pAacConfig[0] >> 3) & 0x1f) : 0;
                free(pAacConfig);

                for (i = 0; i < NUMBER_OF(MP4AudioProfileToName); i++)
                {
                    if (type == MP4AudioProfileToName[i].profile)
                    {
                        *format = MP4AudioProfileToName[i].format;
                        *subformat = MP4AudioProfileToName[i].subformat;
                        return;
                    }
                }
            }
Beispiel #28
0
static void __cdecl
ThreadDebug__LogEntry(const char* function, void* c, void* m, void* t)
{
    if (function != LockMutex && function != UnlockMutex)
    {
        const unsigned Skip = 0; /* tuned for the scenario to debug */
        unsigned Counter = (unsigned)InterlockedIncrement(&ThreadDebug__LogCounter) - 1;
        if (Counter > Skip)
        {
            ThreadDebug__LogEntry_t* entry = &ThreadDebug__Log[(Counter - Skip) % NUMBER_OF(ThreadDebug__Log)];
            entry->tm = (unsigned)ReadTimeStampCounter();
            entry->tid = GetCurrentThreadId();
            entry->f = function;
            entry->c = c;
            entry->m = m;
            entry->t = t;
        }
    }
}
Beispiel #29
0
  // WM_COMMAND
  BOOL wmCommand(int /* i_notifyCode */, int i_id, HWND /* i_hwndControl */)
  {
    switch (i_id)
    {
      case IDOK:
      {
	wchar_t buf[1024];
	GetWindowTextW(GetDlgItem(m_hwnd, IDC_PASSPHRASE), buf, NUMBER_OF(buf));
	m_passPhrase = buf;
	EndDialog(m_hwnd, 1);
	return TRUE;
      }
      case IDCANCEL:
      {
	EndDialog(m_hwnd, 0);
	return TRUE;
      }
    }
    return FALSE;
  }
Beispiel #30
0
TS_DefaultSieveProcedure(HWND hwnd, TSTaskList* tasklist)
{
	HWND root_owner;
	DWORD style;
	DWORD exstyle;
	int i;
	ULONG_PTR extra[1];

	hwnd = GetLastActivePopup(hwnd);

	style = GetWindowLongPtr(hwnd, GWL_STYLE);
	if (!(style & WS_VISIBLE) || (style & WS_DISABLED))
		return TRUE;

	exstyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
	if (!( (!(exstyle & WS_EX_TOOLWINDOW))
	       || (exstyle & WS_EX_APPWINDOW) ))
	{
		return TRUE;
	}

	root_owner = get_root_owner(hwnd);

	for (i = 0; i < tasklist->count; i++) {
		if (root_owner == (HWND)(tasklist->list[i]->extra[0])) {
			tasklist->list[i]->window = hwnd;
			GetWindowText( hwnd,
			               tasklist->list[i]->title,
			               NUMBER_OF(tasklist->list[i]->title) );
			tasklist->list[i]->extra[0] = (ULONG_PTR)root_owner;
			return TRUE;
		}
	}

	extra[0] = (ULONG_PTR)root_owner;
	return TSTaskList_Append(tasklist, hwnd, extra, 1);
}