Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Vreau o masina electrica de tocat...

Cum ajunge remorca de tir inapoi ...

Alt "Utilizator nou" pe T...

ULBS INFORMATICA
 Index preturi

Boxa membrana tweeter infundata

Am nevoie de poze cu un curcubeu

Whisky for Mac
 Xiaomi 14 Gpay

Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...
 BSOD din cauza Intel Audio DSP dr...

De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...

Scor FICO minim
 

Identificare COM Object din Process

- - - - -
  • Please log in to reply
7 replies to this topic

#1
TLGsoft

TLGsoft

    Senior Member

  • Grup: Senior Members
  • Posts: 2,553
  • Înscris: 25.03.2006
Salutare,

Am mai multe instante ale unui program. Fiecare expune un obiect COM la care ma pot lega.

Am obtinut lista proceselor ( Process.GetProcessesByName() ) si lista obiectelor ( UCOMIRunningObjectTable.EnumRunning() )

Cum fac sa stiu care proces expune care obiect? Am incercat in ordinea enumerarii dar nu merge.

C#, .NET 4

Edited by TLGsoft, 29 July 2014 - 14:46.


#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,598
  • Înscris: 30.07.2003
Vezi in codul din GetCurrentDTEObject(), face ceva asemanator: http://developergeek...sual-studio-net

Edited by neagu_laurentiu, 29 July 2014 - 17:56.


#3
TLGsoft

TLGsoft

    Senior Member

  • Grup: Senior Members
  • Posts: 2,553
  • Înscris: 25.03.2006
Multumesc, mai studiez.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
In acel exemplu se compara ProgID-ul care-i acelasi pentru toate instantele, deci nu te ajuta.
N-am reusit sa gasesc o cale de a afla ce proces gazduieste un anumit obiect.

Daca tu ai creat serverul, cred ca nu-ti ramane decat sa introduci o noua functie/interfata care sa-ti returneze PID-ul curent sau alte asemenea.

#5
TLGsoft

TLGsoft

    Senior Member

  • Grup: Senior Members
  • Posts: 2,553
  • Înscris: 25.03.2006
Serverul nu este creat de mine, insa am gasit o functie ce ruterneaza pID-ul... insa acum vad ca UCOMIRunningObjectTable.EnumRunning() imi returneaza de fapt mereu ultimul obiect....

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Functie oferita de server sau de COM?

#7
TLGsoft

TLGsoft

    Senior Member

  • Grup: Senior Members
  • Posts: 2,553
  • Înscris: 25.03.2006
Nu inteleg la ce te referi. Gandeste-te ca ai 10 excel.exe deschise si vrei sa parcurgi fiecare instanta, sa te legi la ea, sa vezi daca are deschis un document, iar daca nu are sa deschizi tu unul si rulezi un macro (de exemplu).

Nu discutam de API-ul MS Office, este doar un exemplu.

#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
La excel e chiar simplu fiindca monikerul va indica spre fisierul deschis, nu spre excel.exe
void testRunningObjectTable()
{
	IRunningObjectTable* rot;
	GetRunningObjectTable(0, &rot);

	IEnumMoniker *enumMoniker;
	rot->EnumRunning(&enumMoniker);

	cout << "Running objects" << endl;

	IBindCtx* bindCtx;
	CreateBindCtx(0, &bindCtx);

	IMoniker* moniker;
	IMalloc* allocator;
	CoGetMalloc(1, &allocator);

	while (enumMoniker->Next(1, &moniker, NULL) != S_FALSE)
	{
		LPOLESTR displayName;
		moniker->GetDisplayName(bindCtx, NULL, &displayName);

		wcout << displayName << endl;

		allocator->Free(displayName);
		moniker->Release();
	}

	allocator->Release();
	enumMoniker->Release();
	bindCtx->Release();
	rot->Release();
}

Nu-i .NET, dar intelegi ideea.

Quote

Running objects
...
R:\test.xlsx
R:\COMTests\COMTests.sln
...


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate