Попробуйте
class JobsListAPIView(generics.ListAPIView):
serializer_class = JobListSerialzer
# pagination_class = ListLimitOffsetPagination
permission_classes = [UserIsAuthenticated]
def get_queryset(self, *args, **kwargs):
# print('self.request.auth', self.request.auth.application.user.userprofile.user_company.id)
qs = Jobs.objects.all()
# if using body data json
query = self.data.get("query")
# else
query = self.request.query_params.get("query")
if query is not None:
qs = qs.filter(job_status=query, job_company = self.request.auth.application.company).exclude(job_is_deleted = True)
return qs
надеюсь, что это поможет
для более подробной информации перейдите по этой ссылке
#include <cstdio>
#include <windows.h>
#include <tlhelp32.h>
int main( int, char *[] )
{
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
if (stricmp(entry.szExeFile, "target.exe") == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
// Do stuff..
CloseHandle(hProcess);
}
}
}
CloseHandle(snapshot);
return 0;
}
Also, if you'd like to use PROCESS_ALL_ACCESS in OpenProcess, you could try this:
#include <cstdio>
#include <windows.h>
#include <tlhelp32.h>
void EnableDebugPriv()
{
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = luid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, false, &tkp, sizeof(tkp), NULL, NULL);
CloseHandle(hToken);
}
int main( int, char *[] )
{
EnableDebugPriv();
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
if (stricmp(entry.szExeFile, "target.exe") == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
// Do stuff..
CloseHandle(hProcess);
}
}
}
CloseHandle(snapshot);
return 0;
}
Следующий код показывает, как вы можете использовать toolhelp и OpenProcess, чтобы получить дескриптор процесса. Обработка ошибок удалена для краткости.
HANDLE GetProcessByName(PCSTR name)
{
DWORD pid = 0;
// Create toolhelp snapshot.
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 process;
ZeroMemory(&process, sizeof(process));
process.dwSize = sizeof(process);
// Walkthrough all processes.
if (Process32First(snapshot, &process))
{
do
{
// Compare process.szExeFile based on format of name, i.e., trim file path
// trim .exe if necessary, etc.
if (string(process.szExeFile) == string(name))
{
pid = process.th32ProcessID;
break;
}
} while (Process32Next(snapshot, &process));
}
CloseHandle(snapshot);
if (pid != 0)
{
return OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
}
// Not found
return NULL;
}
Есть два основных метода. Первый использует PSAPI; В MSDN есть пример , который использует EnumProcesses
, OpenProcess
, EnumProcessModules
и GetModuleBaseName
.
Другой использует Toolhelp, который я предпочитаю. Используйте CreateToolhelp32Snapshot
, чтобы получить снимок списка процессов, пройдитесь по нему с помощью Process32First
и Process32Next
, которые предоставляют имя модуля и идентификатор процесса, пока не найдете тот вы хотите, а затем вызовите OpenProcess
, чтобы получить дескриптор.
Проверьте: Статья MSDN
Вы можете использовать GetModuleName
(я думаю?), Чтобы получить имя и проверить его.
OpenProcess Функция
Из MSDN:
Чтобы открыть дескриптор другого локального процесса и получить полные права доступа,