Вам понадобится специальная обработка, чтобы сопоставить эти методы с примитивными параметрами с соответствующими типами в штучной упаковке.
Простой подход, который может быть достаточным, состоит в том, чтобы создать отображение между коробочным и примитивным типами и искать методы, использующие оба типа. Это всего лишь набросок:
Map<Class<?>, Class<?>> boxedToPrimitive = new HashMap<>();
boxedToPrimitive.put(Integer.class, Integer.TYPE);
boxedToPrimitive.put(Long.class, Long.TYPE);
boxedToPrimitive.put(Boolean.class, Boolean.TYPE);
...
String name = getSetMethod(key);
Method method;
try {
method = target.getClass().getMethod(name, val.getClass());
} catch (NoSuchMethodException missing) {
Class<?> alt = boxedToPrimitive.get(val.getClass());
if (alt == null) throw missing;
method = target.getClass().getMethod(name, alt);
}
method.invoke(target, value);
от: http://www.delphitricks.com/source-code/windows/check_if_a_process_is_running.html
uses TlHelp32;
function processExists(exeFileName: string): Boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := False;
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if processExists('notepad.exe') then
ShowMessage('process is running')
else
ShowMessage('process not running');
end;
Если вы пишете немного автообновляющегося кода, вы также можете подумать о том, чтобы установить какое-либо соединение с вашим приложением и сказать ему, чтобы оно отключилось.
Это может, например, предполагать отправку сообщения в главное окно вашего приложения, в котором говорится, что оно должно выключиться. Или открытие трубы IPC и т. Д.