Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

trying to get the memory usage of a process: compile error Visual c++.net

Posted on 2003-12-01
18
3,250 Views
Last Modified: 2013-12-14
Hello,
I am trying to get the memory usage of the processes running on my system,on this i have found the
program (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/collecting_memory_usage_information_for_a_process.asp)
as an answer given a similar question before.But i am unable to compile the program,i am using visual studio.net(i am relatively new to .net) .
I create the project as a managed c++ empty project.
As i try to build the project i get the following errors:

c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2065: 'pmc' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2065: 'PROCESS_MEMORY_COUNTERS' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2146: syntax error : missing ';' before identifier 'pmc'
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(22): error C2065: 'GetProcessMemoryInfo' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(22): error C2070: ''unknown-type'': illegal sizeof operand
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(24): error C2228: left of '.PageFaultCount' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(26): error C2228: left of '.PeakWorkingSetSize' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(27): error C2228: left of '.WorkingSetSize' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(29): error C2228: left of '.QuotaPeakPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(31): error C2228: left of '.QuotaPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(33): error C2228: left of '.QuotaPeakNonPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(35): error C2228: left of '.QuotaNonPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(36): error C2228: left of '.PagefileUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(38): error C2228: left of '.PeakPagefileUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(51): error C2065: 'EnumProcesses' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(51): error C2171: '!' : illegal on operands of type ''unknown-type''

I have tried including psapi.h in the header files of my solution explorer with no change in the result.Could anyone tell me how can i link the header or psapi.lib files to this project so that it may build.
thanks
0
Comment
Question by:saifnawaz
  • 9
  • 8
18 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856085
1) Since PSAPI functions work in Windows NT 4.0 or later, try to define _WIN32_WINNT>=0x0400 according to this article:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/using_the_sdk_headers.asp

2) Why do you need managed C++ project for this?

3) Show exactly what are you doing: start of cpp file (all #include and #using statements) and code fragment which is not compiled.
0
 

Author Comment

by:saifnawaz
ID: 9856536
hi,
this is the first time i am using visual studio c++.net so i am not sure if managed c++ project is the way to go about this.
my code is :
#include <windows.h>
#include <stdio.h>
#include "psapi.h"

void PrintMemoryInfo( DWORD processID )
{
    HANDLE hProcess;
    PROCESS_MEMORY_COUNTERS pmc;

    // Print the process identifier.

    printf( "\nProcess ID: %u\n", processID );

    // Print information about the memory usage of the process.

    hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION |
                                    PROCESS_VM_READ,
                                    FALSE, processID );
    if (NULL == hProcess)
        return;

    if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
    {
        printf( "\tPageFaultCount: 0x%08X\n", pmc.PageFaultCount );
        printf( "\tPeakWorkingSetSize: 0x%08X\n",
                  pmc.PeakWorkingSetSize );
        printf( "\tWorkingSetSize: 0x%08X\n", pmc.WorkingSetSize );
        printf( "\tQuotaPeakPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPeakPagedPoolUsage );
        printf( "\tQuotaPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPagedPoolUsage );
        printf( "\tQuotaPeakNonPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPeakNonPagedPoolUsage );
        printf( "\tQuotaNonPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaNonPagedPoolUsage );
        printf( "\tPagefileUsage: 0x%08X\n", pmc.PagefileUsage );
        printf( "\tPeakPagefileUsage: 0x%08X\n",
                  pmc.PeakPagefileUsage );
    }

    CloseHandle( hProcess );
}

void main( )
{
    // Get the list of process identifiers.

    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;

    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
        return;

    // Calculate how many process identifiers were returned.

    cProcesses = cbNeeded / sizeof(DWORD);

    // Print the memory usage for each process

    for ( i = 0; i < cProcesses; i++ )
        PrintMemoryInfo( aProcesses[i] );
}

as i build this i get the errors:
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2065: 'pmc' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2065: 'PROCESS_MEMORY_COUNTERS' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(8): error C2146: syntax error : missing ';' before identifier 'pmc'
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(22): error C2065: 'GetProcessMemoryInfo' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(22): error C2070: ''unknown-type'': illegal sizeof operand
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(24): error C2228: left of '.PageFaultCount' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(26): error C2228: left of '.PeakWorkingSetSize' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(27): error C2228: left of '.WorkingSetSize' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(29): error C2228: left of '.QuotaPeakPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(31): error C2228: left of '.QuotaPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(33): error C2228: left of '.QuotaPeakNonPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(35): error C2228: left of '.QuotaNonPagedPoolUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(36): error C2228: left of '.PagefileUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(38): error C2228: left of '.PeakPagefileUsage' must have class/struct/union type
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(51): error C2065: 'EnumProcesses' : undeclared identifier
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo\memore.cpp(51): error C2171: '!' : illegal on operands of type ''unknown-type''

0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856563
Add line
#define _WIN32_WINNT 0x0400

before
#include <windows.h>

I think you don't need managed C++ project. Select unmanaged project, Win32 Console application.
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:saifnawaz
ID: 9856624
I dont have an option for umanaged project/win32 console appliation for visual c++ .net, i have tried it as a windows project and added your line ,
i get the following error:
c:\Documents and Settings\saif\My Documents\Visual Studio Projects\memo2\mem.cpp(59): fatal error C1010: unexpected end of file while looking for precompiled header directive
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856654
Make Rebuild all.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856694
I made the following experiement in Visual Studio 2003:

File - New - Project. In New Project dialog select: Visual C++ Projects, Win32, Win32 Console project. Create a project.
Add psapi.lib to linker (Project Properties, Linker, Input, Additional Dependencies).
Program text is:

#include "stdafx.h"

#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
#include "psapi.h"



void PrintMemoryInfo( DWORD processID )
{
   HANDLE hProcess;
   PROCESS_MEMORY_COUNTERS pmc;

   // Print the process identifier.

   printf( "\nProcess ID: %u\n", processID );

   // Print information about the memory usage of the process.

   hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, processID );
   if (NULL == hProcess)
       return;

   if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
   {
       printf( "\tPageFaultCount: 0x%08X\n", pmc.PageFaultCount );
       printf( "\tPeakWorkingSetSize: 0x%08X\n",
                  pmc.PeakWorkingSetSize );
       printf( "\tWorkingSetSize: 0x%08X\n", pmc.WorkingSetSize );
       printf( "\tQuotaPeakPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPeakPagedPoolUsage );
       printf( "\tQuotaPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPagedPoolUsage );
       printf( "\tQuotaPeakNonPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaPeakNonPagedPoolUsage );
       printf( "\tQuotaNonPagedPoolUsage: 0x%08X\n",
                  pmc.QuotaNonPagedPoolUsage );
       printf( "\tPagefileUsage: 0x%08X\n", pmc.PagefileUsage );
        printf( "\tPeakPagefileUsage: 0x%08X\n",
                  pmc.PeakPagefileUsage );
   }

   CloseHandle( hProcess );
}


int _tmain(int argc, _TCHAR* argv[])
{
   // Get the list of process identifiers.

   DWORD aProcesses[1024], cbNeeded, cProcesses;
   unsigned int i;

   if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
       return 0;

   // Calculate how many process identifiers were returned.

   cProcesses = cbNeeded / sizeof(DWORD);

   // Print the memory usage for each process

   for ( i = 0; i < cProcesses; i++ )
       PrintMemoryInfo( aProcesses[i] );

   return 0;
}

Program is compiled and liked successfully.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856704
And it even works!
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 9856763
Just so the obvious is not overlooked:
1) Right-click on the taskbar and choose Task Manager
2) Click the processes Tab
3) Start your program
4) Your program's name will appear in the list.  Click it once to highlight it and make it easy to watch.  Keep an eye on the "Mem Usage" column as you exercise the program.

-- Dan
0
 

Author Comment

by:saifnawaz
ID: 9856792
Strange
i have done as above
and for linker:solution explorer(right click)--->to properties page-->linker-->input: addition dependencies : psapi.lib
but i am getting the same error :it does not recognise any of the functions of psapi
is there some path i should be setting?
p.s.: do i need to set the path to the psapi.lib in the addition dependencies?
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856832
psapi.h is opened successfully by Visual Studio, but declarations are ignored because of some #ifdef lines in this file. Open psapi.h in Visual Studio (right-click in psapi.h in the program text, select "Open Document"). Find any of unrecognized definitions (for example, GetProcessMemoryInfo). See what constants should be defined for it, for example:

#ifdef <something>

GetProcessMemoryInfo definition

#endif

Using Go to Definition function see what constants are defined or undefined in your project, what are their values. This is a way to find a reason why these definitions are not recognized.
0
 

Author Comment

by:saifnawaz
ID: 9856876
hmmm the definations seem to be fine,
so i am now going to try to have all the definations in my source file and see if it works
the psapi.h file:
/*++ BUILD Version: 0001    // Increment this if a change has global effects

Copyright (c) 1994-1999  Microsoft Corporation

Module Name:

    psapi.h

Abstract:

    Include file for APIs provided by PSAPI.DLL

Author:

    Richard Shupak   [richards]  06-Jan-1994

Revision History:

--*/

#ifndef _PSAPI_H_
#define _PSAPI_H_

#if _MSC_VER > 1000
#pragma once
#endif

#ifdef __cplusplus
extern "C" {
#endif

BOOL
WINAPI
EnumProcesses(
    DWORD * lpidProcess,
    DWORD   cb,
    DWORD * cbNeeded
    );

BOOL
WINAPI
EnumProcessModules(
    HANDLE hProcess,
    HMODULE *lphModule,
    DWORD cb,
    LPDWORD lpcbNeeded
    );

DWORD
WINAPI
GetModuleBaseNameA(
    HANDLE hProcess,
    HMODULE hModule,
    LPSTR lpBaseName,
    DWORD nSize
    );

DWORD
WINAPI
GetModuleBaseNameW(
    HANDLE hProcess,
    HMODULE hModule,
    LPWSTR lpBaseName,
    DWORD nSize
    );

#ifdef UNICODE
#define GetModuleBaseName  GetModuleBaseNameW
#else
#define GetModuleBaseName  GetModuleBaseNameA
#endif // !UNICODE


DWORD
WINAPI
GetModuleFileNameExA(
    HANDLE hProcess,
    HMODULE hModule,
    LPSTR lpFilename,
    DWORD nSize
    );

DWORD
WINAPI
GetModuleFileNameExW(
    HANDLE hProcess,
    HMODULE hModule,
    LPWSTR lpFilename,
    DWORD nSize
    );

#ifdef UNICODE
#define GetModuleFileNameEx  GetModuleFileNameExW
#else
#define GetModuleFileNameEx  GetModuleFileNameExA
#endif // !UNICODE


typedef struct _MODULEINFO {
    LPVOID lpBaseOfDll;
    DWORD SizeOfImage;
    LPVOID EntryPoint;
} MODULEINFO, *LPMODULEINFO;


BOOL
WINAPI
GetModuleInformation(
    HANDLE hProcess,
    HMODULE hModule,
    LPMODULEINFO lpmodinfo,
    DWORD cb
    );


BOOL
WINAPI
EmptyWorkingSet(
    HANDLE hProcess
    );


BOOL
WINAPI
QueryWorkingSet(
    HANDLE hProcess,
    PVOID pv,
    DWORD cb
    );

BOOL
WINAPI
InitializeProcessForWsWatch(
    HANDLE hProcess
    );


typedef struct _PSAPI_WS_WATCH_INFORMATION {
    LPVOID FaultingPc;
    LPVOID FaultingVa;
} PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION;

BOOL
WINAPI
GetWsChanges(
    HANDLE hProcess,
    PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
    DWORD cb
    );

DWORD
WINAPI
GetMappedFileNameW(
    HANDLE hProcess,
    LPVOID lpv,
    LPWSTR lpFilename,
    DWORD nSize
    );

DWORD
WINAPI
GetMappedFileNameA(
    HANDLE hProcess,
    LPVOID lpv,
    LPSTR lpFilename,
    DWORD nSize
    );

#ifdef UNICODE
#define GetMappedFileName  GetMappedFileNameW
#else
#define GetMappedFileName  GetMappedFileNameA
#endif // !UNICODE

BOOL
WINAPI
EnumDeviceDrivers(
    LPVOID *lpImageBase,
    DWORD cb,
    LPDWORD lpcbNeeded
    );


DWORD
WINAPI
GetDeviceDriverBaseNameA(
    LPVOID ImageBase,
    LPSTR lpBaseName,
    DWORD nSize
    );

DWORD
WINAPI
GetDeviceDriverBaseNameW(
    LPVOID ImageBase,
    LPWSTR lpBaseName,
    DWORD nSize
    );

#ifdef UNICODE
#define GetDeviceDriverBaseName  GetDeviceDriverBaseNameW
#else
#define GetDeviceDriverBaseName  GetDeviceDriverBaseNameA
#endif // !UNICODE


DWORD
WINAPI
GetDeviceDriverFileNameA(
    LPVOID ImageBase,
    LPSTR lpFilename,
    DWORD nSize
    );

DWORD
WINAPI
GetDeviceDriverFileNameW(
    LPVOID ImageBase,
    LPWSTR lpFilename,
    DWORD nSize
    );

#ifdef UNICODE
#define GetDeviceDriverFileName  GetDeviceDriverFileNameW
#else
#define GetDeviceDriverFileName  GetDeviceDriverFileNameA
#endif // !UNICODE

// Structure for GetProcessMemoryInfo()

typedef struct _PROCESS_MEMORY_COUNTERS {
    DWORD cb;
    DWORD PageFaultCount;
    SIZE_T PeakWorkingSetSize;
    SIZE_T WorkingSetSize;
    SIZE_T QuotaPeakPagedPoolUsage;
    SIZE_T QuotaPagedPoolUsage;
    SIZE_T QuotaPeakNonPagedPoolUsage;
    SIZE_T QuotaNonPagedPoolUsage;
    SIZE_T PagefileUsage;
    SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS;
typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;

BOOL
WINAPI
GetProcessMemoryInfo(
    HANDLE Process,
    PPROCESS_MEMORY_COUNTERS ppsmemCounters,
    DWORD cb
    );

typedef struct _PERFORMACE_INFORMATION {
    DWORD cb;
    SIZE_T CommitTotal;
    SIZE_T CommitLimit;
    SIZE_T CommitPeak;
    SIZE_T PhysicalTotal;
    SIZE_T PhysicalAvailable;
    SIZE_T SystemCache;
    SIZE_T KernelTotal;
    SIZE_T KernelPaged;
    SIZE_T KernelNonpaged;
    SIZE_T PageSize;
    DWORD HandleCount;
    DWORD ProcessCount;
    DWORD ThreadCount;
} PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION;

BOOL
WINAPI
GetPerformanceInfo (
    PPERFORMACE_INFORMATION pPerformanceInformation,
    DWORD cb
    );

typedef struct _ENUM_PAGE_FILE_INFORMATION {
    DWORD cb;
    DWORD Reserved;
    SIZE_T TotalSize;
    SIZE_T TotalInUse;
    SIZE_T PeakUsage;
} ENUM_PAGE_FILE_INFORMATION, *PENUM_PAGE_FILE_INFORMATION;

typedef BOOL (*PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCWSTR lpFilename);

typedef BOOL (*PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename);

BOOL
WINAPI
EnumPageFilesW (
    PENUM_PAGE_FILE_CALLBACKW pCallBackRoutine,
    LPVOID pContext
    );

BOOL
WINAPI
EnumPageFilesA (
    PENUM_PAGE_FILE_CALLBACKA pCallBackRoutine,
    LPVOID pContext
    );

#ifdef UNICODE
#define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW
#define EnumPageFiles EnumPageFilesW
#else
#define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKA
#define EnumPageFiles EnumPageFilesA
#endif // !UNICODE

DWORD
WINAPI
GetProcessImageFileNameA(
    HANDLE hProcess,
    LPSTR lpImageFileName,
    DWORD nSize
    );

DWORD
WINAPI
GetProcessImageFileNameW(
    HANDLE hProcess,
    LPWSTR lpImageFileName,
    DWORD nSize
    );

#ifdef UNICODE
#define GetProcessImageFileName  GetProcessImageFileNameW
#else
#define GetProcessImageFileName  GetProcessImageFileNameA
#endif // !UNICODE

#ifdef __cplusplus
}
#endif

#endif
0
 

Author Comment

by:saifnawaz
ID: 9856897
hi,
did that and it comes down to these 2 errors:

try error LNK2019: unresolved external symbol "int __stdcall EnumProcesses(unsigned long *,unsigned long,unsigned long *)" (?EnumProcesses@@YGHPAKK0@Z) referenced in function _main

try error LNK2019: unresolved external symbol "int __stdcall GetProcessMemoryInfo(void *,struct _PROCESS_MEMORY_COUNTERS *,unsigned long)" (?GetProcessMemoryInfo@@YGHPAXPAU_PROCESS_MEMORY_COUNTERS@@K@Z) referenced in function "void __cdecl PrintMemoryInfo(unsigned long)" (?PrintMemoryInfo@@YAXK@Z)
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 9856958
Add line

#pragma comment(lib,"psapi.lib")

in any place of your cpp file and try again.
0
 

Author Comment

by:saifnawaz
ID: 9856973
did that, no change sorry
0
 

Author Comment

by:saifnawaz
ID: 9857004
hi,
i set the linker path as C:\program files\microsoft visual studio .net\vc7\platformsdk\lib\Psapi.Lib

and the follwoing is the only error i get:
try fatal error LNK1104: cannot open file 'C:\program.obj'
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 500 total points
ID: 9857016
Remove linker path and try:

#pragma comment(lib,"C:\program files\microsoft visual studio .net\vc7\platformsdk\lib\psapi.lib")
0
 

Author Comment

by:saifnawaz
ID: 9857020
1 error:
try fatal error LNK1104: cannot open file 'C:\program.obj'
0
 

Author Comment

by:saifnawaz
ID: 9861184
hi,
it seem that there was an eror in mt visual studio.net compiler, the program is running fine.
Thanks for your help.
But how do i get the memory usage of the process in KB as in the taskmanager if windows from the information?
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question