В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Принятие Вы находитесь, по крайней мере, на Платформе.NET 2.0, нет никакой потребности использовать P/Invoke: просто проверьте значение System.Windows.Forms.SystemInformation.TerminalServerSession
( MSDN).
Посмотрите подобный вопрос, который я задал: , Как проверить если we’re, работающий от батареи?
, поскольку, если Вы работаете от батареи, Вы также хотите отключить анимации.
/// <summary>
/// Indicates if we're running in a remote desktop session.
/// If we are, then you MUST disable animations and double buffering i.e. Pay your taxes!
///
/// </summary>
/// <returns></returns>
public static Boolean IsRemoteSession
{
//This is just a friendly wrapper around the built-in way
get
{
return System.Windows.Forms.SystemInformation.TerminalServerSession;
}
}
И затем проверять, работаете ли Вы от батареи:
/// <summary>
/// Indicates if we're running on battery power.
/// If we are, then disable CPU wasting things like animations, background operations, network, I/O, etc
/// </summary>
public static Boolean IsRunningOnBattery
{
get
{
PowerLineStatus pls = System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus;
if (pls == PowerLineStatus.Offline)
{
//Offline means running on battery
return true;
}
else
{
return false;
}
}
}
, Который можно просто объединить в одного:
public Boolean UseAnimations()
{
return
(!System.Windows.Forms.SystemInformation.TerminalServerSession) &&
(System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Offline);
}
<час> Примечание: Этот вопрос уже задали (, Определяют, работает ли программа на Удаленном рабочем столе )
Используйте GetSystemMetrics () функция в user32.dll. Используйте PInvoke для вызова его. Следующее является кодом кода, предоставленным первой ссылкой. Вторая ссылка говорит Вам, как вызвать ее в.NET.
BOOL IsRemoteSession(void){
return GetSystemMetrics( SM_REMOTESESSION );
}
Полный код:
[DllImport("User32.dll")]
static extern Boolean IsRemoteSession()
{
return GetSystemMetrics ( SM_REMOTESESSION);
}
существует также SystemInformation.TerminalServerSession
Свойство, которое определяет, подключен ли клиент к сессии Терминального сервера. Эти код, если MSDN обширно, таким образом, я не копирую его здесь.
В дополнение к осуществлению начальной проверки, чтобы видеть, работает ли Ваш рабочий стол на сессии RDP, можно также хотеть обработать ситуацию, где удаленный сеанс соединен или разъединен, в то время как AP работает. У Вас могло быть приложение, работающее на консольной сессии, и затем кто-то мог инициировать соединение RDP с консолью. Если Ваше приложение периодически не выполняет вызов к GetSystemMetrics, это собирается предположить, что это не работает как сессия служб удаленных рабочих столов.
у Вас был бы свой регистр приложения для обновления сессии notificiations через WTSRegisterSessionNotification. Это позволит Вашему applicaiton быть сразу уведомленным, удаленное соединение, был открыт или закрыт для настольной сессии, под которой работает Ваше приложение. См. здесь для некоторого демонстрационного кода C#.
Для некоторого хорошего Delphi Win32 exampale код для использования WTSRegisterSessionNotification, посмотрите этот страница .